天天看點

iOS開發UI篇—CAlayer(建立圖層)

一、添加一個圖層

添加圖層的步驟:

1.建立layer

2.設定layer的屬性(設定了顔色,bounds才能顯示出來)

3.将layer添加到界面上(控制器view的layer上)

iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)

二、添加一個顯示圖檔的圖層

  代碼示例:

iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)

執行效果:

iOS開發UI篇—CAlayer(建立圖層)

說明:在第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

iOS開發UI篇—CAlayer(建立圖層)

(2)點選build pases後,展開link binary....,添加 + 号

iOS開發UI篇—CAlayer(建立圖層)

(3) 在搜尋框中輸入"quartz",選中quartzcore.framework,最後add添加

iOS開發UI篇—CAlayer(建立圖層)

(4)添加完畢後,這個架構就會出現在項目檔案夾中

iOS開發UI篇—CAlayer(建立圖層)

最後,還需要在項目代碼中導入架構的主頭檔案。

四、uiview和calayer的選擇

可以發現,前面的2個效果不僅可以通過添加層來實作,還可以通過添加uiview來實作。如顯示圖檔的層可以用一個uiimageview來實作。 既然calayer和uiview都能實作相同的顯示效果,那究竟該選擇誰好呢?

其實,對比calayer,uiview多了一個事件處理的功能。也就是說,calayer不能處理使用者的觸摸事件,而uiview可以。

是以,在選擇的過程中,需要考慮到實際的情況,如果顯示出來的東西需要跟使用者進行互動的話,用uiview;如果不需要跟使用者進行互動,用uiview或者calayer都可以

當然,calayer的性能會高一些,因為它少了事件處理的功能,更加輕量級

五、補充說明

1.添加子layer

iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)

列印結果如下:

iOS開發UI篇—CAlayer(建立圖層)

說明:在添加layer之前,控制器view上layer又兩個子layer,添加之後,有三個子layer。

2.通路層

iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)

  uiview可以通過subviews屬性通路所有的子視圖,類似地,calayer也可以通過sublayers屬性通路所有的子層

  uiview可以通過superview屬性通路父視圖,類似地,calayer也可以通過superlayer屬性通路父層

3.注意

  在storyboard中,向界面上拖一個button按鈕,列印檢視子layer的個數。

iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)
iOS開發UI篇—CAlayer(建立圖層)

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

繼續閱讀