您好,登錄后才能下訂單哦!
小編給大家分享一下iOS如何實(shí)現(xiàn)扇形動(dòng)畫,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
核心代碼如下:
-(instancetype)initWithCenter:(CGPoint)center radius:(CGFloat)radius bgColor:(UIColor *)bgColor repeatCount:(NSInteger)repeatCount { if (self = [super init]) { //設(shè)置self的frame和center self.backgroundColor = bgColor; self.frame = CGRectMake(0, 0, radius * 2, radius * 2); self.center = center; _repeatCount = repeatCount; //特別注意:貝塞爾曲線的radius必須為self高度的四分之一,CAShapeLayer的線寬必須為self高度的二分之一 UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(radius, radius) radius:radius / 2 startAngle:-M_PI/2 endAngle:M_PI *3 / 2 clockwise:YES]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.path = path.CGPath; maskLayer.fillColor = [UIColor clearColor].CGColor; maskLayer.strokeColor = bgColor.CGColor; maskLayer.lineWidth = radius; //等于半徑的2倍,以圓的邊緣為中心,向圓內(nèi)部伸展一個(gè)半徑,向外伸展一個(gè)半徑,所以看上去以為圓的半徑是self高度的一半。 self.layer.mask = maskLayer; _maskLayer = maskLayer; } return self; } -(void)startAnimaiton { //開始執(zhí)行扇形動(dòng)畫 CABasicAnimation *strokeEndAni = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; strokeEndAni.fromValue = @0; strokeEndAni.toValue = @1; strokeEndAni.duration = 1; //重復(fù)次數(shù) strokeEndAni.repeatCount = _repeatCount; [_maskLayer addAnimation:strokeEndAni forKey:@"ani"]; }
思路
可以讓fillcolor 為clearcolor 讓linewidth充滿整個(gè)圓,然后讓strokeend執(zhí)行動(dòng)畫,從而實(shí)現(xiàn)扇形動(dòng)畫。
下載地址:源碼下載 | 本地下載
調(diào)用方法很簡(jiǎn)單:直接看API
/** 初始化對(duì)象 @param center 中心 @param radius self寬度的一半 @param bgColor 背景色 @param repeatCount 動(dòng)畫重復(fù)次數(shù) @return self */ -(instancetype)initWithCenter:(CGPoint)center radius:(CGFloat)radius bgColor:(UIColor *)bgColor repeatCount:(NSInteger)repeatCount; -(void)startAnimaiton; -(void)puaseAnimation;
以上是“iOS如何實(shí)現(xiàn)扇形動(dòng)畫”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。