layer和3D仿射变换
生活随笔
收集整理的這篇文章主要介紹了
layer和3D仿射变换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、視圖的顯示基于圖層,通過控制圖層同樣能控制顯示效果,獲取當前的視圖的layer,并為其增加圓角邊框。
//設置layer邊框的寬度為2view.layer.borderWidth=2;//如果需要為layer添加顏色需要轉換為CGColor對象view.layer.borderColor=[UIColor greenColor].CGColor;//將邊框的圓角半徑設置為10view.layer.cornerRadius=10;2、通過layer設置視圖的陰影
// 1 設置當前的陰影顏色view.layer.shadowColor=[UIColor blackColor].CGColor;// 2 設置當前凸出來的陰影,通過該方法來控制當前陰影凸出來的程度,從而達到所需要的效果view.layer.shadowOffset=CGSizeMake(5, 5);// 3 設置當前的透明度 view.layer.shadowOpacity=0.5;3、自定義layer
CALayer *layer=[CALayer layer];layer.borderColor=[UIColor redColor].CGColor;layer.borderWidth=2;layer.cornerRadius=10;layer.backgroundColor=[UIColor redColor].CGColor; layer.bounds=CGRectMake(0, 0, 200, 100);//設置position控制當前位置 layer.position=CGPointMake(100, 100); //設置錨點用來控制position的位置,錨點的大小范圍為0-1,可以理解為按照比例來定位圖層的位置點,將該點定位到position屬性所指的位置上去,這樣通過兩個屬性便能很好的控制當前圖層的位置 layer.anchorPoint=CGPointMake(0, 0); //將當前的圖層增加到當前顯示的圖層[self.view.layer addSublayer:layer];4、layer 3D仿射變換
1、平移
1.1、3D平移分為X Y Z 三維,分別設置數值會沿著設置的方向平移?
t1:X軸偏移位置,往下為正數。
t2:Y軸偏移位置,往右為正數。
t3:Z軸偏移位置,往外為正數。
NSValue * nav=[NSValue valueWithCATransform3D: CATransform3DMakeTranslation(t1, t2, t3)]; [view.layer setValue:nav forKey:@"transform"];1.2、通過KVC賦值,如下表格所示
?
//沿著x方向平移100 [view.layersetValue:@(100) forKeyPath:@"transform.translation.x"];//沿著y方向平移100 [view.layersetValue:@(100) forKeyPath:@"transform.translation.y"];//沿著z方向平移100 [view.layersetValue:@(100) forKeyPath:@"transform.translation.z"];2、旋轉
2.1、旋轉有四個參數,第一個為旋轉的角度,為弧度表示,后面三個值分別對應三個軸,可以設置圍繞不同軸旋轉
x:沿著X軸方向旋轉,值范圍-1 和1之間
y:沿著Y軸方向旋轉,值范圍-1和1之間
z:沿著Z軸方向旋轉,值范圍-1和1之間
[UIView animateWithDuration:1 animations:^{view.layer.transform=CATransform3DMakeRotation(M_PI, 0, 0, -1);}];2.2、通過KVC賦值
//沿著z軸旋轉 [view.layer setValue:@(M_PI_2) forKeyPath:@"transform.rotation.z"];//沿著x軸旋轉 [view.layer setValue:@(M_PI_2) forKeyPath:@"transform.rotation.x"];
3、縮放
3.1、三個參數分別為沿著每個軸縮放的倍數,順序依次為 X Y Z三維。
view.layer.transform=CATransform3DMakeScale(1, 1.5, 1);3.2、通過KVC賦值
//沿著x軸方向放大1.5倍數 [view.layer setValue:@(1.5)forKeyPath:@"transform.scale.x"];//沿著y軸方向放大1.5倍數 [view.layer setValue:@(1.5)forKeyPath:@"transform.scale.y"];//沿著z軸方向放大1.5倍數 [view.layer setValue:@(1.5)forKeyPath:@"transform.scale.z"];
?
作者:杰瑞教育出處:http://www.cnblogs.com/jerehedu/?
本文版權歸煙臺杰瑞教育科技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
總結
以上是生活随笔為你收集整理的layer和3D仿射变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity3d 常用代码
- 下一篇: C语言字符串数字提取函数,支持负数、浮点