CALayer

CALayer圖層https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CALayer_class/index.htmlAPI

CALayer是一個層的概念,視圖之所以能夠顯示,都是因爲這個層的原因但CALayer 不清楚具體的響應鏈(不能相應用戶的點擊觸摸等事件).通過CALayer我們可以給UIView添加動畫,還可以改變它的形狀,邊框寬度,顏色等。

CALayer的兩個重要屬性position 用來設置CALayer在父層中的位置 ,以父層左上角(0,0)  

anchorPoint(定位點、錨點) 決定CALayer上的點在父層中position所指的位置,以自己的左上角(0,0) 它的xy 取值範圍都是0 1 默認只爲(0.5 , 0.5)錨點在CALayer的中間

CALayer有一個控制圖層角的曲率 屬性conrnerRadius  ,默認情況下這個曲率隻影響背景顏色不影響背景圖片或是子圖層 ,如果吧masksToBounds 設置爲YES時圖層裏面的所有東西都會被截取。

CALayer的簡單使用

  //改變形狀

    UIView *myview = [[UIView alloc]initWithFrame:CGRectMake(10, 20, 100, 200)];

    myview.layer.backgroundColor = [UIColor orangeColor].CGColor;

    //邊框的顏色

    myview.layer.borderColor = [UIColor greenColor].CGColor;

    //邊框的寬度

    myview.layer.borderWidth = 5;

    //允許設置圓角

    myview.layer.masksToBounds = YES;

    //允許設置圓角

//    myview.clipsToBounds = YES;

    myview.layer.cornerRadius = 10;

    [self.window addSubview:myview];

    

    UIView *myview1 = [[UIView alloc]initWithFrame:CGRectMake(100, 250, 100, 200)];

    myview1.layer.backgroundColor = [UIColor greenColor].CGColor;

    [self.window addSubview:myview1];

    //通過transform這個key創建一個動畫

    CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform"];

    //第一個:弧度  第二個:x  第三個:y  第四個:z

    basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(3.1415, 1.0, 0, 0)];//3D動畫,旋轉180,y爲軸旋轉

    basic.duration = 2;//持續時間

    basic.repeatCount = 2;//重複次數

    basic.cumulative = YES;//是否繼續接着執行

//注意:動畫是添加到layer上面

    [myview1.layer addAnimation:basic forKey:@"animation"];

    //注意:不能馬上將動畫移除

//    [myview1.layer removeAnimationForKey:@"animation"];

    //注意:兩次動畫會合併在一起執行

    CABasicAnimation *basic1 = [CABasicAnimation animationWithKeyPath:@"transform"];

    basic1.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(3.1415, 0, 0, 1.0)];

    basic1.duration = 2;

    basic1.repeatCount = 2;

    basic1.cumulative = YES;//是否繼續接着執行

  

    [myview1.layer addAnimation:basic1 forKey:@"animatio1"];


自定義圖層

    // 創建一個圖層

    CALayer *layer = [CALayer layer];

    // 設置尺寸

    layer.bounds = CGRectMake(0, 0, 100, 100);

    // 設置位置

    layer.position = CGPointMake(100, 100);

    // 設置顏色

    layer.backgroundColor = [UIColor redColor].CGColor;

    // 設置內容

    layer.contents = (__bridge id)[UIImage imageNamed:@"imageName"].CGImage;

    [self.view.layer addSublayer:layer];


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章