1. 圓角ios
CALayer的conrnerRadius屬性能夠控制圖層中角的曲率,值爲0的時候是直角,默認狀況下這個曲率值隻影響背景顏色而不影響背景圖片和子視圖;如果將maskToBounds設置爲YES,圖層中的內容就會被截取。算法
左側圖層爲設置了maskToBounds爲YES,右側沒有設置maskToBounds爲YES;性能
2. 圖層邊框動畫
borderWidth邊框寬度,borderColor邊框顏色;邊框是跟隨圖層的邊界變化的,而不是圖層裏面的內容。rest
左邊視圖:圖片
layer.cornerRadius = 20.0;ci
layer.borderWidth = 5.0;資源
右邊視圖:it
layer1.cornerRadius = 20.0;io
layer1.borderWidth = 5.0;
layer1.masksToBounds = YES;
3. 陰影
shadowOpacity值在0 - 1.0;
shadowColor陰影顏色;shadowOffset偏移量;shadowRadius半徑。
shadowRadius控制着陰影的模糊度,值越大,邊界線看上去就會越模糊和天然,
shadowPath:實時計算陰影很是耗費資源,尤爲是有多個圖層時,如果事先知道陰影是什麼形狀的,能夠經過指定shadowPath來提升性能
方形陰影:
若是是簡單的圖形,如圓形,方形,橢圓,三角形等一些簡單的圖形的話,能夠用這種方法,可是複雜的圖案的話,用貝塞爾曲線(UIBezierPath)會更方便一些。
4. 圖層蒙版
當想展現讓文字慢慢顯示成背景顏色,能夠指定一個透明的蒙版來實現,可是不能動態得地生成蒙版;能夠經過設置mask屬性來解決這個問題,mask圖層定義了父圖層的部分可見區域。
mask圖層中的color屬性可有可無,mask圖層實心的部分會被保留下來,其餘的則會被拋棄。
5. 拉伸過濾
當圖片顯示不一樣大小的時候,會用到拉伸過濾,他做用於原圖的像素上並根據須要生成新的像素顯示在屏幕上。
CALayer有三種拉伸過濾的方法:
kCAFilterLinear(雙線性濾波算法),當放大倍數比較大的時候圖片就會模糊不清了;
kCAFilterNearest
kCAFilterTrilinear
minification(縮小圖片)和magnification(放大圖片)默認的過濾器都是kCAFilterLinear;
kCAFilterTrilinear和kCAFilterLinear很是類似;
kCAFilterNearest:是取樣最近的單像素點而無論其餘的顏色。這樣作很是快,也不會使圖片模糊。可是,最明顯的效果就是,會使得壓縮圖片更糟,圖片放大以後也顯得塊狀或是馬賽克嚴重。
ios核心動畫高級技巧