CALayer与UIBezierPath
生活随笔
收集整理的這篇文章主要介紹了
CALayer与UIBezierPath
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ??UIView繼承于UIResponder CALayer繼承于nsobject 創建UIView創建一個layer,通過UIView的layer屬性可依訪問它的圖層。UIView具有事件處理功能,可以與用戶交互,layer負責顯示和動畫任務。
?? ? 要顯示一個UIView,會自動調用起drawRect方法繪畫所有內容,然后字啊將圖層拷貝到屏幕上,完成UICView的顯示。
? ? frame不能作動畫? 修改大小bounds? 修改位子position
? ? CALayer不能直接使用UIColer、UIImage,要使用CGImageRef、CGColorRef。為了保證跨平臺可以移植性,前者屬于UIKit框架,只能在iOS系統中使用;后者屬于CoreGraphics框架,可以同時在xos和ios使用。CALayer屬于QuartzCore框架,也可以跨平臺。
1 #pragma mark - ?基本圖層 2 CALayer *layer = [CALayer layer]; 3 4 layer.frame = CGRectMake(80, 50, 200, 200); 5 6 layer.backgroundColor = [UIColor redColor].CGColor; 7 8 [self.view.layer addSublayer:layer]; 9 //圓角 10 layer.cornerRadius = 20; 11 //邊框 12 layer.borderWidth = 5; 13 layer.borderColor = [UIColor blueColor].CGColor; 14 //圖片 15 layer.contents =(id)[UIImage imageNamed:@"123.jpg"].CGImage; 16 17 layer.masksToBounds = YES; 18 19 #pragma mark - ?文字圖層 20 CATextLayer *textLayer = [CATextLayer layer]; 21 22 textLayer.frame = CGRectMake(50, 50, 200, 20); 23 24 textLayer.string = @"這是一個頭像"; 25 26 //設置文本顏色、大小,必須設置 27 textLayer.foregroundColor = [UIColor redColor].CGColor; 28 textLayer.fontSize = 17; 29 30 31 [self.view.layer addSublayer:textLayer]; 32 #pragma mark - ?漸變圖層 33 34 //經常用于導航欄的顏色漸變 35 36 CAGradientLayer *graLayer = [CAGradientLayer layer]; 37 38 graLayer.frame = CGRectMake(20, 250, 100, 100); 39 40 graLayer.colors = @[(id)[UIColor redColor].CGColor,(id)[UIColor blueColor].CGColor]; 41 42 //設置漸變方向 43 graLayer.startPoint = CGPointMake(1, 0); 44 graLayer.endPoint = CGPointMake(0, 1); 45 46 [self.view.layer addSublayer:graLayer]; 47 48 #pragma mark - ?遮罩圖層 49 CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 50 //方法一 UIBezioerPath畫一個封閉的路徑 51 52 //畫一個內切圓 53 UIBezierPath *bezierPath1 = [UIBezierPath bezierPathWithRect:CGRectMake(100, 100, 250, 250)]; 54 55 //帶圓角的矩形 56 UIBezierPath *bezierPath2 = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(50, 50, 150, 100) byRoundingCorners:1 | 2 cornerRadii:CGSizeMake(20, 20)]; 57 58 //自定義路徑 59 60 UIBezierPath *bezierPath3 = [UIBezierPath bezierPath]; 61 62 //設置起點 63 [bezierPath3 moveToPoint:CGPointMake(10, 20)]; 64 //添加直線關鍵點 65 [bezierPath3 addLineToPoint:CGPointMake(100, 50)]; 66 [bezierPath3 addLineToPoint:CGPointMake(150, 100)]; 67 [bezierPath3 addLineToPoint:CGPointMake(70, 200)]; 68 //添加弧線關鍵點 69 [bezierPath3 addCurveToPoint:CGPointMake(50, 300) controlPoint1:CGPointMake(100, 100) controlPoint2:CGPointMake(100, 150)]; 70 71 72 //連接首尾 73 [bezierPath3 closePath]; 74 75 76 //設置遮罩圖層的路徑 77 shapeLayer.path = bezierPath3.CGPath; 78 79 //填充顏色 80 shapeLayer.fillColor = [UIColor yellowColor].CGColor; 81 82 [self.view.layer addSublayer:shapeLayer]; 83 84 //在UITableView中使用cornerRadius、CAshapeLayer,容易使UITableView不流暢,可以使用兩張圖片拼出一個圓形頭像?
轉載于:https://www.cnblogs.com/niaoniao/p/5423063.html
總結
以上是生活随笔為你收集整理的CALayer与UIBezierPath的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看人家如何拿到腾讯阿里的offer
- 下一篇: Activity的常用方法和生命周期