layer和3D仿射變換,layer3d仿

來源:互聯網
上載者:User

layer和3D仿射變換,layer3d仿
1、視圖的顯示基於圖層,通過控製圖層同樣能控制顯示效果,擷取當前的視圖的layer,並為其增加圓角邊框。

  //設定layer邊框的寬度為2  view.layer.borderWidth=2;   //如果需要為layer添加顏色需要轉換為CGColor對象   view.layer.borderColor=[UIColor greenColor].CGColor;  //將邊框的圓角半徑設定為10   view.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"];

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.