IOS--CALayer的介紹及使用技巧

  首先對CALayer進行簡單的介紹:
ios

1.在UIView中,CALayer只是一個類的聲明,所以須要添加 QuartzCore框架框架

2.UIKit框架只能應用到ios中,可是Quartz2D是跨平臺的,所以在使用顏色時應該將UIColor轉換成CGColordom

3.修改圖層至關於修改了UIView屬性,即修改了界面屬性函數

4.形變屬性既可使用形變函數制定,也可使用keypath制定動畫

建立imageView並設置邊框屬性(基礎)spa

1.bounds:寬度和高度,x y設置爲0;code

2.position:位置(默認指中心點,具體由anchorPoint決定orm

3.anchorPoint:錨點,(x,y的範圍都是0~1),決定了position的含義ip

4.backgroundColor:背景顏色(CGColorRef 類型)ci

5.borderColor:邊框顏色

6.borderWidth:邊框寬度

7.borderRadius:圓角半徑

8.contents:內容

   UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(90, 90, 90, 90)];
    imgView.backgroundColor = [UIColor redColor];
    imgView.image = [UIImage imageNamed:@"1.jpg"];
    [self.view addSubview:imgView];
    
    //1.獲取layer設置邊框
    imgView.layer.borderWidth = 1;
    imgView.layer.borderColor = [UIColor darkGrayColor].CGColor;
   // 2.設置弧度
    imgView.layer.cornerRadius = 45;
    imgView.layer.masksToBounds = YES;
    imgView.clipsToBounds = YES;
    
    //3.設置陰影
    //若是設置imgView.layer.masksToBounds = YES;  則不會出現陰影
    imgView.layer.shadowColor = [UIColor redColor].CGColor;
    imgView.layer.shadowOffset = CGSizeMake(5, 5);
    imgView.layer.shadowOpacity = 0.5;

    //對imgView的layer層的transform 屬性進行操做(第一種方法)
        //平移
    imgView.layer.transform = CATransform3DMakeTranslation(0, 200, 0);
    //旋轉
     imgView.layer.transform = CATransform3DMakeRotation(M_PI_4, 1, 0, 0);
    //縮放
      imgView.layer.transform = CATransform3DMakeScale(2, 2, 1);
    
   //對imgView的layer層的transform 屬性進行操做(第二種方法)經過kvc的方法
        
           //平移
   [imgView.layer setValue:@100 forKeyPath:@"transform.translation.x"];
    //旋轉
    
    [imgView.layer setValue:@M_PI_2 forKeyPath:@"transform.rotation.z"];
    //縮放
    [imgView.layer setValue:@0.5 forKeyPath:@"transform.scale.x"];

  CALayer的基本屬性

//建立圖層
    CALayer *subLayer = [[CALayer alloc] init];
    //將圖層添加到view的根圖層上
    [self.view.layer addSublayer:subLayer];
    
    //----------經常使用的屬性----------
    //設置圖層的大小
    subLayer.bounds = CGRectMake(0, 0, 200, 200);
    //設置圖層的顯示位置
    subLayer.position = CGPointMake(100, 100);
    //設置背景顏色
    subLayer.backgroundColor = [UIColor redColor].CGColor;
    
    //設置錨點
    //決定了position的含義,x和y的範圍是0~1
    subLayer.anchorPoint = CGPointMake(0.5, 0.5);
    
    //設置圖層顯示的內容
    UIImage *img = [UIImage imageNamed:@"1.jpg"];
    subLayer.contents = (id)img.CGImage;

  CALayer中的隱式動畫(隱式動畫的默認時間爲0.25秒)

   每個UIView內部都默認關聯着一個CALayer,稱這個layer爲Root Layer;

全部的非Root Layer都存在着隱式動畫,默認時長爲1/4秒

bounds:縮放動畫

position:平移動畫

opacity:淡入淡出的動畫(改變透明度)

更多的隱式動畫屬性可在文檔中搜索

使用CALayer繪圖,會調用本身的drawRect方法

//點擊界面觸觸發的方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    //隱式動畫的時間:0.25秒
    
    //若是不想存在動畫
    
    //關閉動畫
//    [CATransaction begin];
//    [CATransaction setDisableActions:YES];
    
    //取得點擊的座標
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];
    
    //1.修改layer的位置
    _layer.position = point;
    
    //二、改變layer的大小
    CGFloat num = arc4random_uniform(50) + 30;
    _layer.bounds = CGRectMake(0, 0, num, num);
    
    //三、修改layer的透明度
    _layer.opacity = arc4random_uniform(10)*0.1;
    
    //四、背景顏色
    _layer.backgroundColor = [UIColor colorWithRed:arc4random_uniform(10)*0.1 green:arc4random_uniform(10)*0.1 blue:arc4random_uniform(10)*0.1 alpha:1].CGColor;
    
    //五、設置邊框的弧度
    _layer.cornerRadius = arc4random_uniform(20);
    
    //六、transform
    _layer.transform = CATransform3DMakeScale(2, 1, 1);
    
    //提交
    [CATransaction commit];
    
}
相關文章
相關標籤/搜索