iOS 核心動畫學習筆記(3)- CALayer的幾個屬性

1、magnificationFilter=拉伸過濾
Linear雙線性濾波算法
Nearest最近過濾, 取樣最近的單像素點而不管其他的顏色。這樣做非常快,也不會使圖片模糊。
Trilinear 三線性濾波算法
對于大圖來說, 雙線性濾波和三線性濾波表現得更出色
對于沒有斜線的小圖來說, 最近過濾算法要很多
簡單來說, 線性過濾保留了形狀, 最近過濾則保留了像素的差異。

2、shouldRasterize=組透明
rasterizationScale,防止Retina屏幕像素化的問題。
UIViewGroupOpacity

3、maskToBounds
maskToBounds屬性,沿邊界裁剪圖形
cornerRadius屬性,可以設定一個圓角
mask, mask類似于一個子圖層, 相對于父圖層(即:擁有該mask屬性的那個圖層)布局,mask圖層定義了父圖層的可見區(qū)域。
一個layer,當用來當作其他layer的mask屬性來用時,他的color屬性是沒有作用的,他像一個餅干切割機,mask圖層實心的部分被保留下來,其他的則被拋棄。
什么樣的layer做mask最好呢? CAShapeLayer的contents設為一個圖片,有alpha通道的32位圖片。 即 layer.contents=xxx.CGImage(image帶透明的。)

4,contents, contentsRect, contentsGravity
如果layer.contents = xxx.cgimage
contentsRect 設置原始圖片的裁剪區(qū)域。
contentsGravity 原始圖片顯示在這個layer本身的frame下面的顯示模式,
是拉伸,
從左邊開始,
還是按原始比例縮小到能整好平鋪在這個frame上。

5.contentsScale
由于contentsGravity屬性, contentsScale支持高分辨率
判斷在繪制圖層的時候, 應該為寄宿圖創(chuàng)建的空間大小 圖片的拉伸度。
對應為UIView的屬性是contentSaleFactor
contentsScale 1.0, 每個點1個像素繪制圖片
2.0, 每個點 2個像素繪制圖片。
一定要手動設置圖層的contenstScale屬性, 否則, retina設備上就顯示不正確。

6, 理解像素和點的區(qū)別

7, contentsCenter
對應為UIImage里的resizeableImageWithCapInsets方法
默認值是0,0,1,1
contentsCenter/contentsGravity配合使用
interface builder 的屬性stretching對應contentsCenter

8, drawRect
drawLayer:inContext:

9,陰影
shadowRadius 模糊度
shadowOffset 陰影的方向和距離, iOS更傾向于寬度設為0,高度設為正值
shadowOpacity 0-1.0的浮點數,大于0 顯示在任意圖層之下
shadowColor陰影的顏色
maskToBounds陰影裁剪
shadowPath 實時計算陰影非常消耗資源,尤其是圖層有多個字圖層,而且每個圖層又一個透明效果的寄宿圖的時候。
如果實現知道陰影的形狀, 則可以提制定一個shadowPath來提高性能。
shadowPath,指定一個矢量圖形, 可以獨立于圖層形狀之外指定陰影的形狀

10,圖層蒙板
mask mask圖層定義了父圖層的可見區(qū)域
maskLayer frame

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容