首先對CALayer進行簡單的介紹:
ios
1.在UIView中,CALayer只是一個類的聲明,所以須要添加 QuartzCore框架框架
2.UIKit框架只能應用到ios中,可是Quartz2D是跨平臺的,所以在使用顏色時應該將UIColor轉換成CGColordom
3.修改圖層至關於修改了UIView屬性,即修改了界面屬性函數
4.形變屬性既可使用形變函數制定,也可使用keypath制定動畫
建立imageView並設置邊框屬性(基礎)spa
1.bounds:寬度和高度,x y設置爲0;code
2.position:位置(默認指中心點,具體由anchorPoint決定)orm
3.anchorPoint:錨點,(x,y的範圍都是0~1),決定了position的含義ip
4.backgroundColor:背景顏色(CGColorRef 類型)ci
5.borderColor:邊框顏色
6.borderWidth:邊框寬度
7.borderRadius:圓角半徑
8.contents:內容
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(90, 90, 90, 90)]; imgView.backgroundColor = [UIColor redColor]; imgView.image = [UIImage imageNamed:@"1.jpg"]; [self.view addSubview:imgView]; //1.獲取layer設置邊框 imgView.layer.borderWidth = 1; imgView.layer.borderColor = [UIColor darkGrayColor].CGColor; // 2.設置弧度 imgView.layer.cornerRadius = 45; imgView.layer.masksToBounds = YES; imgView.clipsToBounds = YES; //3.設置陰影 //若是設置imgView.layer.masksToBounds = YES; 則不會出現陰影 imgView.layer.shadowColor = [UIColor redColor].CGColor; imgView.layer.shadowOffset = CGSizeMake(5, 5); imgView.layer.shadowOpacity = 0.5; //對imgView的layer層的transform 屬性進行操做(第一種方法) //平移 imgView.layer.transform = CATransform3DMakeTranslation(0, 200, 0); //旋轉 imgView.layer.transform = CATransform3DMakeRotation(M_PI_4, 1, 0, 0); //縮放 imgView.layer.transform = CATransform3DMakeScale(2, 2, 1); //對imgView的layer層的transform 屬性進行操做(第二種方法)經過kvc的方法 //平移 [imgView.layer setValue:@100 forKeyPath:@"transform.translation.x"]; //旋轉 [imgView.layer setValue:@M_PI_2 forKeyPath:@"transform.rotation.z"]; //縮放 [imgView.layer setValue:@0.5 forKeyPath:@"transform.scale.x"];
CALayer的基本屬性
//建立圖層 CALayer *subLayer = [[CALayer alloc] init]; //將圖層添加到view的根圖層上 [self.view.layer addSublayer:subLayer]; //----------經常使用的屬性---------- //設置圖層的大小 subLayer.bounds = CGRectMake(0, 0, 200, 200); //設置圖層的顯示位置 subLayer.position = CGPointMake(100, 100); //設置背景顏色 subLayer.backgroundColor = [UIColor redColor].CGColor; //設置錨點 //決定了position的含義,x和y的範圍是0~1 subLayer.anchorPoint = CGPointMake(0.5, 0.5); //設置圖層顯示的內容 UIImage *img = [UIImage imageNamed:@"1.jpg"]; subLayer.contents = (id)img.CGImage;
CALayer中的隱式動畫(隱式動畫的默認時間爲0.25秒)
每個UIView內部都默認關聯着一個CALayer,稱這個layer爲Root Layer;
全部的非Root Layer都存在着隱式動畫,默認時長爲1/4秒
bounds:縮放動畫
position:平移動畫
opacity:淡入淡出的動畫(改變透明度)
更多的隱式動畫屬性可在文檔中搜索
使用CALayer繪圖,會調用本身的drawRect方法
//點擊界面觸觸發的方法 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //隱式動畫的時間:0.25秒 //若是不想存在動畫 //關閉動畫 // [CATransaction begin]; // [CATransaction setDisableActions:YES]; //取得點擊的座標 UITouch *touch = [touches anyObject]; CGPoint point = [touch locationInView:self.view]; //1.修改layer的位置 _layer.position = point; //二、改變layer的大小 CGFloat num = arc4random_uniform(50) + 30; _layer.bounds = CGRectMake(0, 0, num, num); //三、修改layer的透明度 _layer.opacity = arc4random_uniform(10)*0.1; //四、背景顏色 _layer.backgroundColor = [UIColor colorWithRed:arc4random_uniform(10)*0.1 green:arc4random_uniform(10)*0.1 blue:arc4random_uniform(10)*0.1 alpha:1].CGColor; //五、設置邊框的弧度 _layer.cornerRadius = arc4random_uniform(20); //六、transform _layer.transform = CATransform3DMakeScale(2, 1, 1); //提交 [CATransaction commit]; }