iOS CoreAnimation教程 第二篇
今天主要講解圖層的strokeStart strokeEnd 屬性。
strokeStart strokeEnd兩個屬性的預設值都是0-1 ,值的大小大概意思是描述了有多少路徑畫完。想象下你小時候寫英文時候一筆下來的過程,下面會用動畫描述生成的過程。
一般這兩個屬性會結合CAShaperLayer使用,看兩個效果。
具體程式碼實現
UIBezierPath *rectanglePath = [UIBezierPath bezierPath];
//這個是第二個效果
[rectanglePath moveToPoint:CGPointMake(0, 177)];
[rectanglePath addLineToPoint:CGPointMake(185, 177)];
[rectanglePath addLineToPoint:CGPointMake(185, 0)];
[rectanglePath addLineToPoint:CGPointMake(0, 0)];
[rectanglePath addLineToPoint:CGPointMake(0, 177)];
[rectanglePath closePath];
//這個是第一個效果
// [rectanglePath moveToPoint:CGPointMake(185, 177)];
// [rectanglePath addLineToPoint:CGPointMake(185, 0)];
// [rectanglePath addLineToPoint:CGPointMake(0, 0)];
// [rectanglePath addLineToPoint:CGPointMake(0, 177)];
// [rectanglePath addLineToPoint:CGPointMake(185, 177)];
// [rectanglePath closePath];
CAShapeLayer * rectangle = [CAShapeLayer layer];
rectangle.frame = CGRectMake(83, 206, 185, 177);
rectangle.fillColor = [UIColor colorWithRed:0.937 green: 0.431 blue:0.268 alpha:1].CGColor;
rectangle.strokeColor = [UIColor colorWithRed:0.129 green: 0.151 blue:0.404 alpha:1].CGColor;
rectangle.lineWidth = 8;
rectangle.strokeStart = 0.4;
rectangle.strokeEnd = 1;
rectangle.path = rectanglePath.CGPath;
[self.view.layer addSublayer:rectangle];
程式碼大概解釋如下:
- 用貝塞爾曲線生成一個路徑,注意這個路徑座標Y軸是向下的。
- 用CAShaperLayer建立一個圖層依據剛才的路徑,並設定座標,填充色,邊框色,邊框的粗細。
- 最後新增到layer上。
但是為什麼效果不一樣呢?這個就是注意地方:
strokeStart strokeEnd這兩個屬性預設strokeStart 是0,strokeEnd是1。這個屬性的效果和貝塞爾曲線生成開始的點的位置有關, 方向是逆時針方向。也就是你自己用鉛筆畫一個矩形的正筆畫和倒筆畫,同樣都是生成矩形,但是效果卻不一樣。
具體做一個動畫來解釋
UIBezierPath *rectanglePath = [UIBezierPath bezierPath];
// [rectanglePath moveToPoint:CGPointMake(0, 177)];
// [rectanglePath addLineToPoint:CGPointMake(185, 177)];
// [rectanglePath addLineToPoint:CGPointMake(185, 0)];
// [rectanglePath addLineToPoint:CGPointMake(0, 0)];
// [rectanglePath addLineToPoint:CGPointMake(0, 177)];
// [rectanglePath closePath];
[rectanglePath moveToPoint:CGPointMake(185, 177)];
[rectanglePath addLineToPoint:CGPointMake(185, 0)];
[rectanglePath addLineToPoint:CGPointMake(0, 0)];
[rectanglePath addLineToPoint:CGPointMake(0, 177)];
[rectanglePath addLineToPoint:CGPointMake(185, 177)];
[rectanglePath closePath];
CAShapeLayer * rectangle = [CAShapeLayer layer];
rectangle.frame = CGRectMake(83, 206, 185, 177);
rectangle.fillColor = [UIColor colorWithRed:0.937 green: 0.431 blue:0.268 alpha:1].CGColor;
rectangle.strokeColor = [UIColor colorWithRed:0.129 green: 0.151 blue:0.404 alpha:1].CGColor;
rectangle.lineWidth = 8;
rectangle.strokeStart = 0;
rectangle.strokeEnd = 1;
rectangle.path = rectanglePath.CGPath;
[self.view.layer addSublayer:rectangle];
//做動畫
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
animation.fromValue = [NSNumber numberWithFloat:0];
animation.toValue = [NSNumber numberWithFloat:1];
animation.duration = 1.5;
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = false;
[rectangle addAnimation:animation forKey:@"drawLineAnimation"];
在圖層上加了一個動畫描述了路徑的生成過程,下面看效果圖對比貝塞爾曲線點位置不同影響的結果。
相關文章
- iOS 動畫之CoreAnimation(CALayer)iOS動畫
- iOS效能優化 - 工具Instruments之CoreAnimationiOS優化
- HBuilder打包iOS教程UIiOS
- SpringCloud 教程 | 第二篇: 服務消費者(rest+ribbon)SpringGCCloudREST
- SpringBoot進階教程 | 第二篇:日誌元件logback實現日Spring Boot元件
- iOS流式即時通訊教程iOS
- 轉載:SpringBoot非官方教程 | 第二篇:Spring Boot配置檔案詳解Spring Boot
- Flutter外掛iOS端開發教程FlutteriOS
- SQL Profile(第二篇)SQL
- 業餘草 SpringCloud教程 | 第二篇: 服務消費者(rest+ribbon)(Finchley版本)SpringGCCloudREST
- [iOS開發]Carthage安裝和使用教程iOS
- React Native iOS混合開發實戰教程React NativeiOS
- ios超級簽名系統使用配置教程iOS
- iOS- 最全的真機測試教程iOS
- iOS12升級與降級至iOS11.4./11.3.1教程 iOS12怎麼升級iOS
- Pytorch相關(第二篇)PyTorch
- Adaptive Cursor Sharing(第二篇)APT
- [第二篇]——Docker 架構Docker架構
- 逆向分析方向第二篇
- iOS APP上架被拒重新提交稽核教程iOSAPP
- 《iOS 專案化入門教程之試題4》iOS
- 《iOS 專案化入門教程之試題2》iOS
- iOS12 beta5退回至iOS11.4.1教程 iOS12 beta5怎麼降級iOS
- iOS12一鍵刷機降級教程 iOS12怎麼降級?iOS
- iOS10-10.3.3一鍵越獄教程 iOS10-10.3.3怎麼越獄iOS
- iOS12公測版降級至iOS11教程 iOS12公測版怎麼降級iOS
- nginx事件模組 -- 第二篇Nginx事件
- 爬蟲 第二篇 縱觀爬蟲
- Tomcat 第二篇:啟動流程Tomcat
- iOS11.4.1正式版升級教程詳解 iOS11.4.1怎麼升級iOS
- ios APP最新打包上線教程(不用Mac電腦)iOSAPPMac
- IOS動態除錯彙總-傻瓜版教程iOS除錯
- iOS上架詳細通關教程(提交到AppStore)iOSAPP
- 轉載:史上最簡單的SpringCloud教程 | 第二篇: 服務消費者(rest+ribbon)(Finchley版本)SpringGCCloudREST
- ios12捷徑怎麼用?蘋果IOS12捷徑設定使用教程iOS蘋果
- 蘋果iOS 12原生相簿使用教程 蘋果iOS 12原生相簿怎麼用?蘋果iOS
- ios檔案管理軟體FoneLab FoneTrans for iOS免費安裝及啟用圖文教程iOS
- 《golang筆記》第二篇-main入口Golang筆記AI