<p id="qitwt"></p>
      1. <object id="qitwt"><strong id="qitwt"></strong></object>
        <p id="qitwt"></p>
        <li id="qitwt"></li>
        <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
        <p id="qitwt"><label id="qitwt"></label></p>
      2. <acronym id="qitwt"></acronym>
        <p id="qitwt"></p>
        免費開源的iOS開發學習平臺

        CALayer介紹:1-CALayer簡介

        在學習iOS的動畫之前,我們首先需要了解視圖UIView能夠顯示樣式的原理。其實,在屏幕上展示出來的視圖樣式,其實是由UIView對象中的layer屬性所控制的。

        CALayer簡介

        視圖UIView類中有一個重要的屬性--layer,類型是CALayer類,這個屬性是負責視圖外觀樣式的。我們知道,當我們創建一個視圖類時,除了能夠在一塊矩形區域內顯示樣式外,還能夠與用戶進行交互,這是因為UIView類繼承自UIResponder類。

        @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, CALayerDelegate>
        
        @property(nonatomic,readonly,strong)  CALayer  *layer;  
        

        CALayer類也可以認為是不能響應用戶交互的視圖,因為其能夠直接在屏幕上進行顯示。當我們在開發過程中,假如僅僅希望在界面上定制一塊矩形區域的樣式而不需要與用戶進行交互時,我們完全可以創建一個CALayer的對象,這樣做的效率要比創建一個UIView對象要高。

        CALayer的常用屬性

        當我們設置UIView的一些外觀屬性時,例如:背景顏色、大小、透明度等等,其本質上是修改的UIView對象中layer的屬性,只不過蘋果官方為了簡化代碼,從而進行了一些封裝操作。因此,我們熟知的一些UIView的外觀屬性,其實在CALayer類中都有定義。

        • 實例化方法
        + (instancetype)layer;
        
        • frame:該layer相對于父layer的位置以及大小
        @property CGRect frame;
        
        • bounds:該layer控制的矩形區域的大小
        @property CGRect bounds;
        
        • transform:形變屬性,可以用于改變layer的大小、位置、角度等
        @property CATransform3D transform;
        
        • 整體樣式相關的屬性

        @property(nullable) CGColorRef backgroundColor;//背景顏色
        @property(nullable, strong) id contents;//layer的內容,通常為一張圖片
        @property CGColorRef borderColor;//邊框顏色(CGColorRef類型)
        @property CGFloat borderWidth;//邊框寬度
        
        • 邊角與陰影相關的屬性

        @property CGFloat cornerRadius;//圓角半徑
        @property CGColorRef shadowColor;//陰影顏色
        @property float shadowOpacity;//陰影不透明(0.0 ~ 1.0)
        @property CGSize shadowOffset;//陰影偏移位置
        
        • layer層次關系控制的方法與屬性
        @property(nullable, copy) NSArray<CALayer *> *sublayers; //獲得一個父layer中所有的子layer
        
        - (void)addSublayer:(CALayer *)layer; //添加一個子layer到父layer上
        
        • 向layer對象添加一個動畫對象
        - (void)addAnimation:(CAAnimation *)anim forKey:(nullable NSString *)key;
        

        示例代碼

        我們通過一個示例來添加一個CALayer對象到控制器View的layer上,同時對自定義CALayer對象的樣式進行一些定制。

        - (void)viewDidLoad {
            [super viewDidLoad];
            
            CALayer *subLayer = [CALayer layer];
            subLayer.frame = CGRectMake(140, 100, 100, 100);
            subLayer.backgroundColor = [UIColor yellowColor].CGColor;
            subLayer.borderColor = [UIColor redColor].CGColor;
            subLayer.borderWidth = 4.0;
            subLayer.cornerRadius = 2.0;
            
            [self.view.layer addSublayer:subLayer];
        }
        

        運行結果。

        https://github.com/99ios/14.3.1


        青青草国产成人久久_jizzjizz日本护士高清_亚洲 另类 国产 另类_99久久免费精品色老
        <p id="qitwt"></p>
          1. <object id="qitwt"><strong id="qitwt"></strong></object>
            <p id="qitwt"></p>
            <li id="qitwt"></li>
            <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
            <p id="qitwt"><label id="qitwt"></label></p>
          2. <acronym id="qitwt"></acronym>
            <p id="qitwt"></p>