標籤:商業 開發 縮放 inter 蘋果 方式 事務 邊框顏色 使用者
CALayer簡介:
CALayer我們又稱它叫做層,CALayer類的概念與UIView非常類似,並且可以包含圖片、文本、背景色等。它與UIView最大的不同在於它不能響應使用者互動,可以說它根本就不知道響應鏈的存在,它的 API 雖然提供了 “某點是否在圖層範圍內的方法”,但是它並不具有響應的能力。
在每一個UIView執行個體當中,都有一個預設的支援圖層layer,UIView負責建立並且管理這個圖層。實際上 UIView之所以能夠顯示,就是因為它裡面有這個一個層,才具有顯示的功能 ,UIView僅僅是對它的一層封裝,實現了CALayer的delegate,提供了處理事件互動的具體功能,還有動畫底層方法的進階API。可以說CALayer是UIView的內部實現細節。
UIView中的layer屬性
CALayer的 CATransform3D屬性
旋轉,x,y,z 分別代表x,y,z軸.(如UIView的動畫都是繞著Z軸變化的)self.imageView.layer.transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);平移self.imageView.layer.transform = CATransform3DScale(self.imageView.layer.transform, 0.5, 0.5, 0);縮放self.imageView.layer.transform = CATransform3DTranslate(self.imageView.layer.transform, 50, 50, 0);
可以通過KVC的方式進行設定屬性.
但是CATransform3DMakeRotation它的值,是一個結構體, 所以要把結構轉成對象.NSValue *value = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1, 0, 0)];[_imageView.layer setValue:value forKeyPath:@"transform.scale"];
後面forKeyPath屬性值不是亂寫的.蘋果文檔當中給了相關的屬性.
Snip20160309_2.pngCALayer的position和anchorPoint
position和anchorPoint是CAlayer的兩個屬性.
我們以前修改一個控制項的位置都是能過Frame的方式進行修改.
現在利用CALayer的position和anchorPoint屬性也能夠修改控制項的位置.
這兩個屬性是配合使用的.
- position:它是用來設定當前的layer在父控制項當中的位置的.
所以它的座標原點.以父控制項的左上方為(0.0)點.
- anchorPoint:它是決點CALayer身上哪一個點會在position屬性所指的位置
anchorPoint它是以當前的layer左上方為原點(0.0)
它的取值範圍是0~1,它的預設在中間也就是(0.5,0.5)的位置.
anchorPoint又稱錨點.就是把錨點定到position所指的位置.
兩者結合使用.想要修改某個控制項的位置,我們可以設定它的position點.
設定完畢後.layer身上的anchorPoint會自動定到position所在的位置
隱式動畫
瞭解什麼是隱式動畫前,要先瞭解是什麼根層和非根層.
1.根層:UIView內部自動關聯著的那個layer我們稱它是根層.
2.非根層:自己手動建立的層,稱為非根層.
隱式動畫就是當對非根層的部分屬性(bounds、backgroundColor、position等)進行修改時, 它會自動的產生一些動畫的效果.
我們稱這個預設產生的動畫為隱式動畫.
李小南
連結:http://www.jianshu.com/p/42b98ca384b7
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
iOS開發之CALayer介紹