1.CALayer是核心動(dòng)畫(huà)的基礎(chǔ)惹想,可以做圓角、陰影础浮、邊框等效果。
2.每個(gè)UIview內(nèi)部都有一個(gè)Layer的屬性奠骄。
3.在實(shí)現(xiàn)核心動(dòng)畫(huà)時(shí)豆同,本質(zhì)上將CALayer中的內(nèi)容轉(zhuǎn)換成位圖,從而便于圖形硬件的操縱含鳞。
4.在使用CALayer是要添加QuartzCore框架影锈。
5.UIKit 框架只能在IOS開(kāi)發(fā)使用不能在MAC開(kāi)發(fā)使用,但是Quartz 2D 是可以跨平臺(tái)的,因此在使用顏色鸭廷、image時(shí)要將結(jié)果進(jìn)行轉(zhuǎn)化枣抱。轉(zhuǎn)化為CG·····的。
6.修改圖層相當(dāng)于修改UIview的屬性辆床,即修改界面的屬性佳晶。
7.形變屬性既可以使用形變函數(shù)制定,也可以使用keyPath指定讼载。
CALayer可以設(shè)置一下屬性:
bounds:寬度和高度轿秧。
position:位置(默認(rèn)為中心點(diǎn),具體由anchorPoint決定)
anchorPoint:錨點(diǎn)(x维雇,y的范圍是0-1)決定了position的含義淤刃。
backgroundColor:背景顏色(CGcolorRef類(lèi)型)
borderColor:邊框顏色(CGColorRef類(lèi)型)
borderWidth:邊框?qū)挾?br>
borderRadius:圓角半徑
content:內(nèi)容
transform可以調(diào)整CALayer的形變,包括:旋轉(zhuǎn)吱型、縮放逸贾、平移。
transform屬性的參數(shù)可以查詢(xún):CATransform津滞。
直接看代碼:
UIImage *image = [UIImage imageNamed:@"1.JPG"];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
[imageView setFrame:CGRectMake(50, 50, 200, 200)];
[self.view addSubview:imageView];
//1.圓角半徑
//提示imageview中 圖層不止一個(gè) 如果要實(shí)現(xiàn)圓角效果 需要設(shè)置一個(gè)跟誰(shuí)屬性
//setMasksToBounds 可以讓imageview中所有的子圖層跟誰(shuí)imageview一起變化
[imageView.layer setMasksToBounds:YES];
imageView.layer.cornerRadius = 50.0f;
//2.陰影
//提示 如果設(shè)置了 setMasksToBounds屬性 imageview的陰影屬性無(wú)效
[imageView.layer setShadowColor:[UIColor redColor].CGColor];
[imageView.layer setShadowOffset:CGSizeMake(10.0, 10.0)];
[imageView.layer setShadowOpacity:1.0f];
//3.邊框
[imageView.layer setBorderColor:[UIColor blueColor].CGColor];
[imageView.layer setBorderWidth:3.0f];
//4.形變屬性 在CAlyer中 形變屬性是3d的 不再是2d的
//注意 : 形變參數(shù)在使用set方法是 只能使用一種形變
//4.1 平移屬性
// [imageView.layer setTransform:CATransform3DMakeTranslation(0, 300, 0)];
// //4.2 縮放蘇醒
// [imageView.layer setTransform:CATransform3DMakeScale(0.5, 0.5, 1.0)];
// //4.2旋轉(zhuǎn)屬性 通常在旋轉(zhuǎn)時(shí) 使用z軸即可 要沿著那個(gè)軸轉(zhuǎn) 就設(shè)置為1 x,y 旋轉(zhuǎn)90為不可見(jiàn)狀態(tài)
// [imageView.layer setTransform:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];
//5.利用keyPath設(shè)置形變 但是屬性不要出錯(cuò) 可以在文檔中進(jìn)行搜索(transform3D)
//5.1平移
[imageView.layer setValue:@-100 forKeyPath:@"transform.translation.x"];
//5.2縮放
[imageView.layer setValue:@0.5 forKeyPath:@"transform.scale"];
//5.3旋轉(zhuǎn)
[imageView.layer setValue:@M_PI_2 forKeyPath:@"transform.rotation.z"];
效果: