CALayer(二)

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核心動畫高級技巧

相關文章
相關標籤/搜索