亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

快速上手IOS UIBezierPath(貝塞爾曲線)

2020-07-26 02:53:30
字體:
來源:轉載
供稿:網友

UIBezierPath主要用來繪制矢量圖形,它是基于Core Graphics對CGPathRef數據類型和path繪圖屬性的一個封裝,所以是需要圖形上下文的(CGContextRef),所以一般UIBezierPath在drawRect中使用。

使用方法

UIBezierPath 是對 CGPathRef 的封裝。創建矢量圖形時,拆解成一或多條線段,拼接起來,每條線段的終點都是下一條線段的起點。

具體地:

1.創建一個 UIBezierPath 對象

2.用 moveToPoint: 設置初始線段的起點

3.添加線段,定義一或多個子路徑

4.修改 UIBezierPath 的繪圖相關的屬性,比如stroke path的屬性 lineWidth 和 lineJoinStyle ,filled path的屬性 usesEvenOddFillRule

注意:如果是矩形或者圓之類的特殊圖形,可以不用第2步。

代碼案例

畫直線

UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:CGPointMake(50, 50)];[path addLineToPoint:CGPointMake(100, 50)];path.lineWidth = 5.0f;path.lineJoinStyle = kCGLineJoinRound;[path stroke];

創建三角形

UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:CGPointMake(50, 50)];[path addLineToPoint:CGPointMake(300, 50)];[path addLineToPoint:CGPointMake(200, 150)];// 最后的閉合線是可以通過調用closePath方法來自動生成的,也可以調用-addLineToPoint:方法來添加// [path addLineToPoint:CGPointMake(50, 50)];[path closePath];path.lineWidth = 5.0f;[path stroke];

創建矩形

UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(50, 100, 50, 50)];path.lineWidth = 5.0f;[path stroke];

創建內切曲線

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 200, 50, 50)];path.lineWidth = 5.0f;[path stroke];

 UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 200, 50, 100)]; path.lineWidth = 5.0f; [path stroke];

創建帶有圓角的矩形,當矩形變成正圓的時候,Radius就不再起作用

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(50, 300, 50, 50) cornerRadius:15.0f];path.lineWidth = 5.0f;[path stroke];

設定特定的角為圓角的矩形

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(50, 400, 50, 50) byRoundingCorners:UIRectCornerBottomLeft cornerRadii:CGSizeMake(5,5)];path.lineWidth = 5.0f;[path stroke];

創建圓弧

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 550) radius:25 startAngle:0 endAngle:1.5*M_PI clockwise:YES];path.lineWidth = 5.0f;[path stroke];

通過路徑A創建路徑B

UIBezierPath *path_A = [UIBezierPath bezierPath];[path_A moveToPoint:CGPointMake(200, 50)];[path_A addLineToPoint:CGPointMake(250, 100)];path_A.lineWidth = 5.0f;UIBezierPath *path_B = [UIBezierPath bezierPathWithCGPath:path_A.CGPath];[path_B stroke];

創建三次貝塞爾曲線

UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:CGPointMake(100, 200)];[path addCurveToPoint:CGPointMake(300, 200) controlPoint1:CGPointMake(150, 150) controlPoint2:CGPointMake(250, 250)];[path stroke];

創建二次貝塞爾曲線

UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:CGPointMake(100, 200)];[path addQuadCurveToPoint:CGPointMake(300, 200) controlPoint:CGPointMake(150, 150)];[path stroke];

添加圓弧

 UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(200, 400)]; [path addLineToPoint:CGPointMake(225, 410)]; [path addArcWithCenter:CGPointMake(200, 400) radius:25 startAngle:0 endAngle:1.5*M_PI clockwise:YES];// [path closePath];// [path removeAllPoints]; [path stroke];

追加路徑

UIBezierPath *path_A = [UIBezierPath bezierPath];[path_A moveToPoint:CGPointMake(200, 500)];[path_A addLineToPoint:CGPointMake(225, 410)];UIBezierPath *path_B = [UIBezierPath bezierPath];[path_B moveToPoint:CGPointMake(200, 600)];[path_B addLineToPoint:CGPointMake(225, 500)];[path_A appendPath:path_B];[path_A stroke];

創建翻轉路徑,即起點變成終點,終點變成起點

 UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(50, 50)]; [path addLineToPoint:CGPointMake(100, 50)]; path.lineWidth = 5.0f; NSLog(@"%@",NSStringFromCGPoint(path.currentPoint)); UIBezierPath *path_b = [path bezierPathByReversingPath]; CGAffineTransform transform = CGAffineTransformMakeTranslation(200, 0); [path_b applyTransform: transform]; // 兩條路徑分別添加一條直接到 self.center [path addLineToPoint: CGPointMake(self.frame.size.width*0.5, self.frame.size.height*0.5)]; [path_b addLineToPoint: CGPointMake(self.frame.size.width*0.5, self.frame.size.height*0.5)]; NSLog(@"%@",NSStringFromCGPoint(path_b.currentPoint)); [[UIColor redColor] set]; [path stroke]; [[UIColor blueColor] set]; [path_b stroke];

路徑進行仿射變換

 UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(100, 50)]; [path addLineToPoint:CGPointMake(200, 50)]; CGAffineTransform transform = CGAffineTransformRotate(self.transform, M_PI_4); [path applyTransform:transform]; path.lineWidth = 5.0f; [path stroke];

創建虛線

CGFloat dashStyle[] = {1.0f, 2.0f};UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:CGPointMake(50, 50)];[path addLineToPoint:CGPointMake(100, 50)];[path setLineDash:dashStyle count:2 phase:0.0];[path stroke];

設置顏色

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100, 100, 100, 100)];[[UIColor greenColor] setStroke];[[UIColor redColor] setFill];[path stroke];[path fill];

設置描邊混合模式

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100, 100, 100, 100)];[[UIColor greenColor] setStroke];path.lineWidth = 10.0f;[path strokeWithBlendMode:kCGBlendModeSaturation alpha:1.0];[path stroke]; 

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100, 100, 100, 100)]; [[UIColor redColor] setFill]; [path fillWithBlendMode:kCGBlendModeSaturation alpha:0.6]; [path fill];

修改當前圖形上下文的繪圖區域可見,隨后的繪圖操作導致呈現內容只有發生在指定路徑的填充區域

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100, 100, 100, 100)];[[UIColor greenColor] setStroke];[path addClip];[path stroke];

結語

關于UIBezierPath的簡單介紹就到這了,主要是用代碼做了展示,屬性跟方法,沒詳細去介紹,我覺得可以直接看蘋果的api寫的也蠻清楚的.或者自己試試不同的參數樣式也能大概理解了.

核心動畫跟貝賽爾曲線都有了簡單的介紹了,接下來就可以動手做點簡單的自定義動畫了.

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲亚裔videos黑人hd| 一本色道久久综合狠狠躁篇怎么玩| 色婷婷综合久久久久中文字幕1| 亚洲精品视频在线播放| 亚洲色图美腿丝袜| 国产精品18久久久久久麻辣| 亚洲一二三在线| 中文.日本.精品| 91精品视频在线播放| 韩曰欧美视频免费观看| 青青草国产精品一区二区| 一区二区成人精品| 欧美在线视频一区| 国产成人精品在线播放| 亚洲毛片一区二区| www.午夜精品| 国产亚洲欧洲高清| 亚洲欧美日韩国产精品| 欧美成人精品三级在线观看| 亚洲图片在线综合| 久久69精品久久久久久久电影好| 久久人人爽人人爽人人片av高请| 欧美极品少妇xxxxⅹ喷水| 亚洲精品电影在线观看| 亚洲国产欧美自拍| 91免费的视频在线播放| 久久精品国产久精国产一老狼| 亚洲第一精品自拍| 2019中文字幕在线| 久久久久久亚洲精品不卡| 国产suv精品一区二区三区88区| 国产精品福利无圣光在线一区| 久久精品青青大伊人av| 欧美成aaa人片免费看| 国产精品视频男人的天堂| 国产精品高清在线| 成人啪啪免费看| 成人av.网址在线网站| 亚洲日韩中文字幕在线播放| 国产69精品久久久久9| 成人激情视频小说免费下载| 韩国美女主播一区| 成人网在线免费观看| 91精品国产综合久久久久久久久| 国产精品999999| 久久91精品国产91久久跳| 成人av在线亚洲| 精品五月天久久| 亚洲国产精品va| 国产成人精品a视频一区www| 久久久久久久激情视频| 欧美激情精品久久久久久免费印度| 欧美一区二粉嫩精品国产一线天| 亚洲在线观看视频网站| 欧美激情中文字幕乱码免费| 欧美电影《睫毛膏》| 国产91在线播放精品91| 136fldh精品导航福利| 国产成人jvid在线播放| 91成人天堂久久成人| 国产日韩欧美中文在线播放| 2019中文字幕在线观看| 国产精品视频区1| 日韩精品视频在线免费观看| 欧美极品在线视频| 日韩av在线免费观看| 九九热99久久久国产盗摄| 久久精品视频导航| 亚洲免费av电影| 欧美日本精品在线| 日韩av电影在线网| 久久影院中文字幕| 2019中文字幕在线免费观看| 久久av.com| 欧美国产一区二区三区| 久久手机精品视频| 日韩在线免费av| 欧美男插女视频| 成人伊人精品色xxxx视频| 久久视频国产精品免费视频在线| 国产成人午夜视频网址| 国产成人免费av| 午夜欧美不卡精品aaaaa| 国产脚交av在线一区二区| 欧美性jizz18性欧美| 日韩电影中文字幕在线| 国产成人福利夜色影视| 97成人在线视频| 久久av红桃一区二区小说| 国产伦精品一区二区三区精品视频| 成人美女免费网站视频| 蜜臀久久99精品久久久久久宅男| 国产成人精品999| 精品久久久久久久久久久久久| 91视频国产高清| 欧美性猛交xxxx久久久| 国产日韩欧美在线视频观看| 日本精品一区二区三区在线| 有码中文亚洲精品| 欧美一区二区三区图| 亚洲第一偷拍网| 美乳少妇欧美精品| 亚洲国产精品嫩草影院久久| 亚洲风情亚aⅴ在线发布| 欧美国产日韩中文字幕在线| 国产91网红主播在线观看| 午夜剧场成人观在线视频免费观看| 97人人爽人人喊人人模波多| 热久久这里只有精品| 精品夜色国产国偷在线| 亚洲欧美精品伊人久久| 中文字幕免费精品一区高清| 欧美裸体视频网站| 国产精品国产自产拍高清av水多| 精品亚洲一区二区三区四区五区| 日韩成人在线电影网| 亚洲另类xxxx| 亚洲成人免费网站| 欧日韩在线观看| 亚洲色图日韩av| 欧美福利视频在线| 2019中文在线观看| 日韩成人av在线播放| 日本精品久久久久影院| 日韩av电影免费观看高清| 日韩电影免费在线观看中文字幕| 精品亚洲男同gayvideo网站| 欧美电影免费播放| 奇门遁甲1982国语版免费观看高清| 国产精品v片在线观看不卡| 久久天天躁狠狠躁夜夜av| 国产日韩欧美在线| 琪琪亚洲精品午夜在线| 久久久综合av| 欧美小视频在线| 国产精品免费久久久| 亚洲男人第一av网站| 久久精品人人爽| 久久久久国色av免费观看性色| 亲爱的老师9免费观看全集电视剧| 亚洲第一精品电影| 久久亚洲综合国产精品99麻豆精品福利| 91亚洲永久免费精品| 一区二区国产精品视频| 97在线视频一区| 亚洲欧美成人一区二区在线电影| 国产精品18久久久久久麻辣| 浅井舞香一区二区| 欧美大尺度激情区在线播放| 久久成人精品视频| 日韩精品高清视频| 一区二区三区亚洲| 欧美老少配视频| 亚洲视频在线观看视频| 亚洲精品久久久久久久久久久久| 中文字幕一精品亚洲无线一区| 久久久视频在线| 欧美日韩国产黄| 国产精品久久久久久久久粉嫩av| 国产成人a亚洲精品| 最近中文字幕mv在线一区二区三区四区| 色妞欧美日韩在线| 8090成年在线看片午夜| 亚洲国产女人aaa毛片在线|