本文目錄
* 上一講
已經說過,uiview內部預設有個calayer物件(層),通過layer屬性可以訪問這個層。要注意的是,這個預設的層不允許重新建立,但可以往層裡面新增子層
* uiview可以通過addsubview:方法新增子檢視,類似地,calayer可以通過addsublayer:方法新增子層
接下來演示一下如何新增子層:
回到頂部
1 calayer *mylayer =[calayer layer];2//* 第1行建立了乙個自動釋放的calayer物件,你也可以使用經典的alloc和init方法來建立設定層的寬度和高度(100x100)
3 mylayer.bounds = cgrectmake(0, 0, 100, 100);4
//設定層的位置
5 mylayer.position = cgpointmake(100, 100);6
//設定層的背景顏色:紅色
7 mylayer.backgroundcolor =[uicolor redcolor].cgcolor;8//
設定層的圓角半徑為10
9 mylayer.cornerradius = 10;10
11//
新增mylayer到控制器的view的layer中
12 [self.view.layer addsublayer:mylayer];
* 第12行將建立好的層新增到控制器的view的層中
回到頂部
1 calayer *mylayer =[calayer layer];2//* 在第7行設定需要顯示的,注意,這裡用的是uiimage的cgimage屬性,是一種cgimageref型別的資料設定層的寬度和高度(100x100)
3 mylayer.bounds = cgrectmake(0, 0, 100, 100);4
//設定層的位置
5 mylayer.position = cgpointmake(100, 100);6
//設定需要顯示的
7 mylayer.contents = (id)[uiimage imagenamed:@"
lufy.png
"].cgimage;8//
設定層的圓角半徑為10
9 mylayer.cornerradius = 10;10
//如果設定了,需要設定這個屬性為yes才有圓角效果
11 mylayer.maskstobounds =yes;
1213
//新增mylayer到控制器的view的layer中
14 [self.view.layer addsublayer:mylayer];
回到頂部
* 首先要知道: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個效果不僅可以通過新增層來實現,還可以通過新增uiview來實現。比如,第1個紅色的層可以用乙個uiview來實現,第2個顯示的層可以用乙個uiimageview來實現。
既然calayer和uiview都能實現相同的顯示效果,那究竟該選擇誰好呢?
* 其實,對比calayer,uiview多了乙個事件處理的功能。也就是說,calayer不能處理使用者的觸控事件,而uiview可以
* 所以,如果顯示出來的東西需要跟使用者進行互動的話,用uiview;如果不需要跟使用者進行互動,用uiview或者calayer都可以
* 當然,calayer的效能會高一些,因為它少了事件處理的功能,更加輕量級
回到頂部
* uiview可以通過subviews屬性訪問所有的子檢視,類似地,calayer也可以通過sublayers屬性訪問所有的子層
* uiview可以通過superview屬性訪問父檢視,類似地,calayer也可以通過superlayer屬性訪問父層
* 下面再看一張uiview和calayer的關係圖:
如果兩個uiview是父子關係,那麼它們內部的calayer也是父子關係。
CALayer2 建立新的層
本文目錄 上一講已經說過,uiview內部預設有個calayer物件 層 通過layer屬性可以訪問這個層。要注意的是,這個預設的層不允許重新建立,但可以往層裡面新增子層 uiview可以通過addsubview 方法新增子檢視,類似地,calayer可以通過addsublayer 方法新增子層 接...
CALayer 層的屬性
每乙個uiview內部都預設關聯著乙個calayer,我們可以稱這個layer為root layer 根層 所有的非root layer,也就是手動建立的物件,都存在著隱式動畫。當對非root layer的部分屬性進行相應修改時,缺省會自動產生一些動畫效果,這些屬性稱為 animatable pro...
CALayer層的屬性
一.position和anchorpoint 1.簡單介紹 calayer有2個非常重要的屬性 position和anchorpoint position 1 用來設定calayer在父層中的位置 2 以父層的左上角為原點 0,0 anchorpoint 1 稱為 定位點 錨點 2 決定著calay...