日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

layer和3D仿射变换

發布時間:2023/12/9 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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仿射变换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。