#CALayer

##1、CALayer與UIView之間不得不說的祕密 在咱們學習使用CALayer以前,咱們先來回顧下UIView的基礎建立和使用。 ###一、UIView的基本建立建立和設置 首先咱們來看看UIView的簡單建立和一些簡單的設置,以及怎樣將建立好的UIView添加到VIew界面上進行顯示的。學習

//利用初始化的方式建立一個UIView並固定UIView在View上的顯示位置
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 330, 200)];
    //設置VIew上的背景顏色
    view.backgroundColor = [UIColor redColor];
    
    //將建立好的UIView添加到主界面View上
    [self.view addSubview:view];

從上面的示例代碼中咱們能夠看出來,建立一個UIView是很簡單的,同時設置它的各方面的屬性也是很簡單的,只須要根據它的屬性代碼來設置就行了,最後將建立設置好的UIView添加到主界面view上進行顯示就行了 ###二、CALayer的基本建立和設置 上面咱們已經瞭解了UIView的簡單的建立和設置,那麼這裏咱們也來看看CALayer的簡單的建立和設置字體

// 利用初始化的方式來建立一個CALayer,同時固定其初始顯示的位置和設置相應的屬性
    CALayer *layer = [[CALayer alloc] init];
    layer.frame = CGRectMake(10, 320, 330, 200);
    //設置layer的顯示顏色
    layer.backgroundColor = [UIColor blueColor].CGColor;
    
        // 將圖層添加到父圖層
    [self.view.layer addSublayer:layer];

###三、CALayer和UIView之間的相同點了不一樣點 經過上面兩個視圖的建立示例代碼咱們能夠看出來兩個視圖之間存在相同點也存在不一樣點:code

相同點:圖片

  • 1)、CALayer和UIView的建立是比較類似的,都是能夠經過初始化方式來建立,並且顯示時須要固定顯示位置的。
  • 2)、CALayer和UIView的屬性設置基本上是同樣的都是能夠經過相對應的屬性直接去設置的。
  • 3)、CALayer和UIView都是建立好以後須要主動添加到主視圖上面才能顯示。

不一樣點:ci

  • 1)、CALayer和UIView兩個視圖之間的顯示層次不一樣,CALayer是主要的顯示層,能夠理解爲UIVIew其實就是基於CALayer層上的。(這只是我我的的理解,若是有誤,還望各位大大指點迷津。)
  • 2)、CALayer和UIView的父視圖不一樣,經過上面的示例代碼咱們能夠看出來UIView的父視圖是VIew,而CALayer的父視圖倒是[self.view.layer]

#2、CALayer的基本設置 上面咱們看了CALayer的基本建立和一些簡單的基本屬性,那麼接下來咱們來看看CALayer視圖的一些基本設置;string

##一、簡單屬性的設置it

屬性名 用途 備註
bounds 尺寸 可用CGRectMake來肯定視圖的顯示尺寸
position: 定位點 肯定CAlayer視圖的中心定位點
anchorPoint 錨點 決定layer上的哪一個點在 position 點上,默認(0.5, 0.5),範圍:(0,0) ~ (1,1)
zPosition z方向的層級 用來肯定CALayer視圖在z方向上的視圖
cornerRadius 設置圓角 設置視圖四個角的圓滑弧度,使其看着沒有那麼銳利
masksToBounds 剪切 是否能夠裁剪多餘的圖層,默認爲NO

對於這些簡單屬性的設置我就不一一羅列了,其實都是同樣的都是經過上面的屬性來定義就好。eg:io

//  尺寸
    layer.bounds = CGRectMake(0, 0, 200, 200);
    //  定位點
    layer.position = self.view.center;
    
    // 錨點、支點
    layer.anchorPoint = CGPointMake(0.5, 0.5);

以上則是CALayer的一些基本屬性的設置,固然除去這些簡單基本屬性還有一些其餘相對來講稍顯複雜的屬性,那麼下面我就來爲你們簡單的介紹一些CALayer中的一些稍顯複雜的屬性。table

##二、複雜(特殊)屬性的設置基礎

  • 1)、當咱們在使用CALayer時,有時候確定須要去設置視圖的邊框之類的,好比說去設置視圖的邊框樣色和寬度的。eg
//設置CALayer視圖的邊框顏色和寬度
    layer.borderWidth = 5;
    layer.borderColor = [UIColor lightGrayColor].CGColor;
  • 2)、同時當咱們在使用CALayer時還能夠去設置CALayer視圖中的一些專有的屬性,好比說咱們須要將CALayer視圖進行美化,那就能夠去設置它的陰影: 尺寸、顏色、透明度、圓角。eg
// 設置陰影、 尺寸、
    layer.shadowOffset = CGSizeMake(10, 5);
    //設置顏色
    layer.shadowColor = [UIColor redColor].CGColor;
    //設置透明度,透明度通常爲(0~1)
    layer.shadowOpacity = 0.5;
    //設置圓角,圓角值都是大於0的數,數值越大圓角幅度越大
    layer.shadowRadius = 10;
  • 3)、爲CALayer中填充內容,首先咱們先來看看填充圖片內容是怎麼填充的。 eg:
layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"image4.jpg"].CGImage);

經過上面這個代碼咱們能夠看出來給CALayer中填充圖片內容再也不是想UIView中那樣的直接填充了,而是須要將 UIImage 橋接(__bridge)到CGImage,注意:(__bridge id _Nullable),這個是用來將UIVIew中的一些控件轉換爲CALayer中可使用的關鍵代碼

  • 4)、其次咱們再來看看CALayer中使用文字怎麼填充(使用layer CATextLayer 子類填充文字) 由於CATextLayer是基於CALayer上的子類,因此咱們在使用時它自身也有一些相對應的屬性須要咱們去設置,下面咱們一塊兒來看看CATextLayer的一些使用設置。eg
//建立CATextLayer
    CATextLayer *textLayer = [[CATextLayer alloc] init];
    //肯定位置
    textLayer.frame = CGRectMake(10, 550, 300, 30);
	//設置填充內容
    textLayer.string = @"這是layer填充的文字內容";
   
    //設置CATextLayer在沒有顯示字體以前的顏色
    textLayer.foregroundColor = [UIColor blackColor].CGColor;
    //設置CATextLayer 的背景顏色
    textLayer.backgroundColor = [UIColor redColor].CGColor;
    //設置顯示的字體高度和須要開闢顯示字體的寬度
    textLayer.font = (__bridge CFTypeRef _Nullable)([UIFont systemFontOfSize:20 weight:500]);
    //設置顯示的文字高度
    textLayer.fontSize = 20;
    //設置文字對齊方式
    textLayer.alignmentMode = @"center";

以上就是CALayer的簡單的建立和一些簡單的屬性設置,今天咱們就介紹到這裏,明天咱們再來介紹CALayer的一些基本使用!

相關文章
相關標籤/搜索