iOS核心動畫解析1
在iOS中所謂的核心動畫在表面上理解是檢視的在二維或三維空間上位置,大小,角度等方面的變化, 在視覺效果上給使用者一種賞心悅目的感覺, 在介紹核心動畫之前我們先了解一下圖層和檢視的關係.
檢視和圖層
一個檢視就是在螢幕上顯示的一個矩形塊(圖片,視訊等),他能夠攔截類似於觸控手勢等使用者的輸入,檢視在層級關係中可以相互巢狀,其中一個檢視可以管理它的所有位置.
CALayer
CALayer類和UIView很形似,在CALayer上也可以新增(圖片,視訊等).其中UIView和CALayer最大的區別CALayer不處理使用者的互動.UIView和CALayer是一種相互平行的關係.
例如:當你在CALayer上新增一個image(圖片時)你會發現與你之前在UIView上新增的圖片,兩者在位置上會有差距, 在Xcode中你可以觀察一下圖層檢視, 如果在CALayer下新增圖片其圖片的位置會與圖層在同一介面, 如果你在UIView上面新增圖片會發現圖片並不會與view在同一檢視層,示例如下
那麼既然UIView上面能放圖片,視訊.那麼為什麼開發者還要生成CALayer這個類呢,CALayer類有很多輔助的功能:
(1). 陰影, 圓角, 帶顏色的邊框
(2). 3D變化
(3). 非矩形範圍
(4). 透明遮罩
(5). 多級非線性動畫
在CALayer中有很多屬性可以改變圖片的動畫,其屬性有:
CGRect bounds
CGPoint position 用來設定CALayer在父層中的位置
以父層的左上角為原點(0, 0, 0)三維 或 (0, 0)二維
CGFloat zPosition 用來設定CALayer在父層中的位置
以父層的左上角為原點(0)
CGPoint anchorPoint 稱為“定位點”、“錨點”
決定著CALayer身上的哪個點會在position屬性所指的位置
以自己的左上角為原點(0, 0)
它的x、y取值範圍都是0~1,預設值為(0.5, 0.5)
CGFloat anchorPointZ 在3D中在Z中的錨點
BOOL hidden 是否隱藏檢視
BOOL masksToBounds 是否切割該檢視上面的餘下的部分 通常與cornerRadius搭配使用
這麼多的屬性,一一進行嘗試,就會發現其中神奇之處,一些效果在View層面是做不出來的.下面我將介紹幾個重要的屬性
屬性:contents
CALayer 有一個屬性叫做contents,這個屬性的型別被定義為id,意味著它可以是任何型別的物件。在這種情況下,你可以給contents屬性賦任何值。但是,在實踐中,如果你給contents賦的不是CGImage,那麼你得到的圖層將是空白的。
它之所以被定義為id型別,是因為在Mac OS系統上,這個屬性對CGImage和NSImage型別的值都起作用。如果你試圖在iOS平臺上將UIImage的值賦給它,只能得到一個空白的圖層。
事實上,你真正要賦值的型別應該是CGImageRef,它是一個指向CGImage結構的指標。UIImage有一個CGImage屬性,它返回一個"CGImageRef",如果你想把這個值直接賦值給CALayer的contents,那你將會得到一個編譯錯誤。
儘管Core Foundation型別跟Cocoa物件在執行時貌似很像(被稱作toll-free bridging),它們並不是型別相容的,不過你可以通過bridged關鍵字轉換。如果要給圖層的寄宿圖賦值,你可以按照以下這個方法:
如果你沒有使用ARC,你就不需要__bridge這部分。
讓我們來繼續修改我們在第一章新建的工程,以便能夠展示一張圖片而不僅僅是一個背景色。我們已經用程式碼的方式建立一個圖層,那我們就不需要額外的圖層了。那麼我們就直接把layerView的宿主圖層的contents屬性設定成圖片。
清單2.1 更新後的程式碼。
相關文章
- iOS 核心動畫高階技巧 - 1iOS動畫
- iOS動畫全面解析iOS動畫
- iOS核心動畫筆記iOS動畫筆記
- iOS核心動畫筆記2iOS動畫筆記
- iOS核心動畫型別介紹iOS動畫型別
- iOS動畫 屬性屬性解析iOS動畫
- 解析 iOS 動畫原理與實現iOS動畫
- iOS動畫程式設計-Layer動畫[ 1 ] Layer Animations OverviewiOS動畫程式設計View
- Android轉場動畫深度解析(1)Android動畫
- iOS學習筆記-動畫篇1iOS筆記動畫
- iOS實踐:通過核心動畫完成過山車iOS動畫
- iOS核心動畫高階技術(十五) 圖層效能iOS動畫
- iOS核心動畫高階技術(十二) 效能調優iOS動畫
- iOS 動畫iOS動畫
- iOS動畫-按鈕動畫iOS動畫
- iOS動畫專題·UIView二維形變動畫與CAAnimation核心動畫(transform動畫,基礎,關鍵幀,組動畫,路徑動畫,貝塞爾曲線)iOS動畫UIViewORM
- 《iOS核心動畫高階技巧》筆記(四) - 專用圖層iOS動畫筆記
- iOS 動畫-定時器動畫iOS動畫定時器
- IOS動畫使用iOS動畫
- iOS動畫——ViewAnimationsiOS動畫View
- iOS動畫實戰之Lottie動畫iOS動畫
- 【Flutter 實戰】動畫核心Flutter動畫
- iOS 動畫之Spring動畫、Block動畫、GIF圖iOS動畫SpringBloC
- iOS系統導航欄自定義標題動畫跳變解析iOS動畫
- iOS 動畫技巧 (一)iOS動畫
- iOS UIView基本動畫iOSUIView動畫
- iOS 按鈕動畫iOS動畫
- iOS 動畫筆記iOS動畫筆記
- iOS UIView層動畫iOSUIView動畫
- iOS 動畫特效(swift)iOS動畫特效Swift
- iOS動畫庫-lottieiOS動畫
- iOS動畫——Layer AnimationsiOS動畫
- ios 中心放大動畫iOS動畫
- IOS動畫學習iOS動畫
- 【iOS開發】iOS 動畫詳解iOS動畫
- 核心動畫程式設計(一)動畫程式設計
- 核心動畫程式設計(二)動畫程式設計
- 核心動畫(Core Animation Programming)動畫