CoreAnimation 開篇

CoreAnimation 開篇


    CoreAnimation 目錄html

    CoreAnimation系列博客是我對學習CoreAnimation的知識整理,博客排列順序以及知識講解存在欠缺望見諒.api

    博客的編寫是在工做之餘,儘可能保證CoreAnimation系列博客在6月初所有編寫完成,感興趣的同窗能夠關注一下.學習

    爲了保證學習CoreAnimation的質量我會在每一個篇幅結束後附上GitHub地址以供查看源碼.動畫

CoreAnimation簡介

    CoreAnimation將其翻譯爲中文則是"核心動畫"(Core:核心,Animation:動畫).然而若是單純的只是介紹動畫我想我不會用大規模的篇幅去梳理其概念,api,以及代碼實現.atom

     CoreAnimation中的動畫只是其一小部分, CoreAnimation其實是一個複合引擎,它的功能是以其最快的速度組合屏幕上不一樣的可視內容,這個內容是被分解成獨立的圖層,存儲在一個叫作圖層樹的體系之中.這個樹即是咱們在iOS程序上所能看到視圖的基礎.翻譯

圖層樹

視圖與圖層

    所謂的視圖就是咱們錯看到的內容,它可以攔截相似於鼠標點擊或者觸摸手勢等操做,視圖在層級關係中能夠互相嵌套,一個視圖能夠管理它的全部子視圖的位置.圖層則是視圖之間的層級關係,下面兩張圖就分別是視圖與圖層.3d

視圖        圖層

    所在iOS當中,全部的視圖都從一個叫作UIVIew的基類派生而來,UIView能夠處理觸摸事件,能夠支持基於Core Graphics繪圖,能夠作仿射變換(例如旋轉或者縮放),或者簡單的相似於滑動或者漸變的動畫.code

CALayer

    CALayer與UIView的區別和聯繫我寫過一篇博客.
    CALayer與UIView的區別和聯繫htm

平行的層級關係

    每一個UIView上都會存在一個CALayer,而實質行UIView的職責也就是控制和管理圖層(CALayer),而且響應事件.真正的圖形展現以及動畫處理都是CALayer去作的.所以UIView是在CALayer上的封裝以及添加了響應事件的功能.blog

圖層的能力

    在某種意義上說UIView既然是對CALayer的封裝,那麼咱們使用UIView就行了,並且對於一些簡單的需求來講,咱們確實不必處理CALayer,由於蘋果已經經過UIView的高級API間接地使得動畫和視圖的展示變得很簡單.

    可是這種簡單會不可避免地帶來一些靈活上的缺陷.若是你略微想在底層作一些改變,或者使用一些蘋果沒有在UIView上實現的接口功能,這時除了介入CoreAnimation底層以外別無選擇.

    例以下面的功能,咱們只能選擇CALayer去實現.

  • 陰影,圓角,帶顏色的邊框
  • 3D變換
  • 非矩形範圍
  • 透明遮罩
  • 多級非線性動畫
  • 等等

使用圖層

    下面讓咱們真正的去使用圖層.

  • 圓角,帶顏色的邊框

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIView *centerView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.centerView.layer.cornerRadius = 10;// 設置圖層的圓角半徑
    self.centerView.layer.borderWidth = 2;// 設置圖層的邊框寬度
    self.centerView.layer.borderColor = [UIColor greenColor].CGColor;// 設置圖層的邊框顏色
    self.centerView.layer.masksToBounds = YES;//暫不理會
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
相關文章
相關標籤/搜索