最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS快速實現(xiàn)環(huán)形漸變進度條

 更新時間:2016年10月09日 14:29:48   作者:夜千尋墨  
之前看到很多環(huán)形進度條,看上去很酷,然后就試著學習他們的代碼,結(jié)果發(fā)現(xiàn)實現(xiàn)一個環(huán)形進度條一點也不簡單。我就在想一個簡單的進度條有這么復雜嗎?自己摸索后,有一個簡單的實現(xiàn)方法。現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒。

前言

進度條相信我們大家都不陌生,往往我們很多時候需要使用到圓形進度條。這篇文章給大家分享了利用iOS如何快速實現(xiàn)環(huán)形進度條,下面來一起看看。

一:先制作一個不帶顏色漸變的進度條

自定義一個cycleView,在.m 中實現(xiàn)drawRect方法

- (void)drawRect:(CGRect)rect {

  CGContextRef ctx = UIGraphicsGetCurrentContext();//獲取上下文

  CGPoint center = CGPointMake(100, 100); //設(shè)置圓心位置
  CGFloat radius = 90; //設(shè)置半徑
  CGFloat startA = - M_PI_2; //圓起點位置
  CGFloat endA = -M_PI_2 + M_PI * 2 * _progress; //圓終點位置

  UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];

  CGContextSetLineWidth(ctx, 10); //設(shè)置線條寬度
  [[UIColor blueColor] setStroke]; //設(shè)置描邊顏色

  CGContextAddPath(ctx, path.CGPath); //把路徑添加到上下文

  CGContextStrokePath(ctx); //渲染

}

因為drawRect方法只是在視圖剛剛出現(xiàn)的時候執(zhí)行一次,所以我們需要使用

[self setNeedsDisplay];

這個方法來進行重新繪制,

在控制器里面加一個slider,滑動slider來控制進度變化

- (void)drawProgress:(CGFloat )progress
{
  _progress = progress;
  [self setNeedsDisplay];
}

看一下效果


如果進度條不需要加漸變色,那么這兒幾行代碼就完成了。

下面來實現(xiàn)一下帶有漸變色的進度條,原理很簡單,剛剛畫的是一條默認是黑色的線條,我們把黑色替換成一條漸變色的線條就可以了。

環(huán)形漸變色線條的制作:

第一步

使用CAShapeLayer繪制出漸變層,應(yīng)為它只能指定兩個點之間進行漸變,所以這里需要兩個CAShapeLayer,左邊一個和右邊一個,看一下效果圖

代碼實現(xiàn)

//生成漸變色
  CALayer *gradientLayer = [CALayer layer];

  //左側(cè)漸變色
  CAGradientLayer *leftLayer = [CAGradientLayer layer];
  leftLayer.frame = CGRectMake(0, 0, self.bounds.size.width / 2, self.bounds.size.height);  // 分段設(shè)置漸變色
  leftLayer.locations = @[@0.3, @0.9, @1];
  leftLayer.colors = @[(id)[UIColor yellowColor].CGColor, (id)[UIColor greenColor].CGColor];
  [gradientLayer addSublayer:leftLayer];

  //右側(cè)漸變色
  CAGradientLayer *rightLayer = [CAGradientLayer layer];
  rightLayer.frame = CGRectMake(self.bounds.size.width / 2, 0, self.bounds.size.width / 2, self.bounds.size.height);
  rightLayer.locations = @[@0.3, @0.9, @1];
  rightLayer.colors = @[(id)[UIColor yellowColor].CGColor, (id)[UIColor redColor].CGColor];
  [gradientLayer addSublayer:rightLayer];

這個漸變層只是一個中間變量,是不能顯示出來的,我這里只是演示一下,現(xiàn)在我們已經(jīng)拿到了漸變層gradientLayer。

第二步

我們需要制作一個環(huán)形路徑

先看一下效果:

代碼實現(xiàn):

CGPoint center = CGPointMake(100, 100);
  CGFloat radius = 90;
  CGFloat startA = - M_PI_2; //設(shè)置進度條起點位置
  CGFloat endA = -M_PI_2 + M_PI * 2 * _progress; //設(shè)置進度條終點位置

  //獲取環(huán)形路徑(畫一個圓形,填充色透明,設(shè)置線框?qū)挾葹?0,這樣就獲得了一個環(huán)形)
  _progressLayer = [CAShapeLayer layer];//創(chuàng)建一個track shape layer
  _progressLayer.frame = self.bounds;
  _progressLayer.fillColor = [[UIColor clearColor] CGColor]; //填充色為無色
  _progressLayer.strokeColor = [[UIColor redColor] CGColor]; //指定path的渲染顏色,這里可以設(shè)置任意不透明顏色
  _progressLayer.opacity = 1; //背景顏色的透明度
  _progressLayer.lineCap = kCALineCapRound;//指定線的邊緣是圓的
  _progressLayer.lineWidth = 10;//線的寬度
  UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];//上面說明過了用來構(gòu)建圓形
  _progressLayer.path =[path CGPath]; //把path傳遞給layer,然后layer會處理相應(yīng)的渲染,整個邏輯和CoreGraph是一致的。
  [self.layer addSublayer:_progressLayer];

第三步,也是最后一步了

用我們在第二步生成的環(huán)形路徑去截取第一步生成的漸變層

[gradientLayer setMask:_progressLayer]; //用progressLayer來截取漸變層
self.layer addSublayer:gradientLayer];

截取的layer層就是我們最后需要的,看一看我們最后截取后得到的


到這里,我們已經(jīng)完成了99%了,最后一步,根據(jù)自己的需要讓它顯示多少的比例就完成了。比例的控制在第二部的progress屬性,比例在0-1之間,看一看最后的效果。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習和工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • IOS打開系統(tǒng)相機的閃光燈

    IOS打開系統(tǒng)相機的閃光燈

    今天給大家分享一下如何調(diào)用iphone的拍照功能和打開閃光燈,有些代碼我也不太理解,很多是在網(wǎng)上借鑒其他人的。
    2015-05-05
  • iOS實現(xiàn)富文本編輯器的方法詳解

    iOS實現(xiàn)富文本編輯器的方法詳解

    大家在開發(fā)的時候經(jīng)常會用到富文本編輯器,所以這篇文章就給大家整理了如何使用iOS實現(xiàn)富文本編輯器的方法,相信本文對大家具有一定的參考借鑒價值,有需要的朋友們可以一起來看看。
    2016-10-10
  • iOS的XMPPFramework簡單介紹(實現(xiàn)及時通信)

    iOS的XMPPFramework簡單介紹(實現(xiàn)及時通信)

    這篇文章主要介紹了iOS的XMPPFramework簡單介紹(實現(xiàn)及時通信),實現(xiàn)了基于XMPP協(xié)議通信的開發(fā),有需要的朋友可以了解一下。
    2016-11-11
  • iOS?xcconfig編寫示例教程

    iOS?xcconfig編寫示例教程

    這篇文章主要為大家介紹了iOS?xcconfig編寫示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • iOS 原生地圖地理編碼與反地理編碼(詳解)

    iOS 原生地圖地理編碼與反地理編碼(詳解)

    下面小編就為大家?guī)硪黄猧OS 原生地圖地理編碼與反地理編碼(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • iOS 導航欄無縫圓滑的隱藏 Navigationbar實例代碼

    iOS 導航欄無縫圓滑的隱藏 Navigationbar實例代碼

    本文通過實例代碼給大家介紹了iOS 導航欄無縫圓滑的隱藏 Navigationbar的效果,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • iOS UILabel 設(shè)置內(nèi)容的間距及高度的計算示例

    iOS UILabel 設(shè)置內(nèi)容的間距及高度的計算示例

    本篇文章主要介紹了iOS UILabel 設(shè)置內(nèi)容的間距及高度的計算示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • iOS如何獲取漢字(簡體中文)筆畫數(shù)詳解

    iOS如何獲取漢字(簡體中文)筆畫數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何獲取漢字(簡體中文)筆畫數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-02-02
  • ios uicollectionview實現(xiàn)橫向滾動

    ios uicollectionview實現(xiàn)橫向滾動

    這篇文章主要為大家詳細介紹了ios uicollectionview實現(xiàn)橫向滾動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • ios scrollview嵌套tableview同向滑動的示例

    ios scrollview嵌套tableview同向滑動的示例

    本篇文章主要介紹了ios scrollview嵌套tableview同向滑動的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

阜阳市| 囊谦县| 罗平县| 乌鲁木齐县| 阿拉善右旗| 鲜城| 大厂| 泌阳县| 沅江市| 绥棱县| 志丹县| 革吉县| 乐昌市| 资兴市| 浦城县| 格尔木市| 习水县| 安溪县| 台中县| 宣汉县| 安庆市| 前郭尔| 鱼台县| 东兰县| 鄂托克旗| 千阳县| 钟祥市| 吴旗县| 杨浦区| 阳江市| 建水县| 米泉市| 奇台县| 黄龙县| 亚东县| 台东市| 健康| 固安县| 花莲市| 乌鲁木齐县| 锡林郭勒盟|