一、添加一個圖層
添加圖層的步驟:
1.建立layer
2.設定layer的屬性(設定了顔色,bounds才能顯示出來)
3.将layer添加到界面上(控制器view的layer上)


二、添加一個顯示圖檔的圖層
代碼示例:


執行效果:
說明:在第27行設定需要顯示的圖檔,注意,這裡用的是uiimage的cgimage屬性,是一種cgimageref類型的資料
三、cgcolorref和cgimageref資料類型
1.簡單說明
calayer是定義在quartzcore架構中的;cgimageref、cgcolorref兩種資料類型是定義在coregraphics架構中的;uicolor、uiimage是定義在uikit架構中的
其次,quartzcore架構和coregraphics架構是可以跨平台使用的,在ios和mac os x上都能使用,但是uikit隻能在ios中使用
是以,為了保證可移植性,quartzcore不能使用uiimage、uicolor,隻能使用cgimageref、cgcolorref
不過很多情況下,可以通過uikit對象的特定方法,得到coregraphics對象,比如uiimage的cgimage方法可以傳回一個cgimageref
2.導入quartzcore架構
在xcode5中不再需要我們自己導入這個架構,如果是在ios6和xcode4以前,需要導入架構
(1) 點選項目名稱,然後點選右邊targets下面的target
(2)點選build pases後,展開link binary....,添加 + 号
(3) 在搜尋框中輸入"quartz",選中quartzcore.framework,最後add添加
(4)添加完畢後,這個架構就會出現在項目檔案夾中
最後,還需要在項目代碼中導入架構的主頭檔案。
四、uiview和calayer的選擇
可以發現,前面的2個效果不僅可以通過添加層來實作,還可以通過添加uiview來實作。如顯示圖檔的層可以用一個uiimageview來實作。 既然calayer和uiview都能實作相同的顯示效果,那究竟該選擇誰好呢?
其實,對比calayer,uiview多了一個事件處理的功能。也就是說,calayer不能處理使用者的觸摸事件,而uiview可以。
是以,在選擇的過程中,需要考慮到實際的情況,如果顯示出來的東西需要跟使用者進行互動的話,用uiview;如果不需要跟使用者進行互動,用uiview或者calayer都可以
當然,calayer的性能會高一些,因為它少了事件處理的功能,更加輕量級
五、補充說明
1.添加子layer


列印結果如下:
說明:在添加layer之前,控制器view上layer又兩個子layer,添加之後,有三個子layer。
2.通路層


uiview可以通過subviews屬性通路所有的子視圖,類似地,calayer也可以通過sublayers屬性通路所有的子層
uiview可以通過superview屬性通路父視圖,類似地,calayer也可以通過superlayer屬性通路父層
3.注意
在storyboard中,向界面上拖一個button按鈕,列印檢視子layer的個數。


特别注意:如果一個控件是另外一個控件的子控件,那麼這個控件的layer也是另一個控件的子layer。