(转) Core Animation 简介
| 原文出處:(http://hi.baidu.com/zijian0428/blog/item/6085e5fe8ff987225d60083b.html) 1.????簡介 2.????相關類 2.1????層(layrer) 2.2動畫和時間類 3.????類層次圖 ? 第三章???? 層的坐標及轉換????這章節主要描述層坐標的構成要素,構成要素之間的關系及如何轉換產生復雜的效果。 1????層坐標系統 層 坐標使用了和Quanz圖形一樣的坐標系統。默認情況下,原點(0.0, 0.0)在左下角,向右及向上增長。請注意:該坐標系統是不同于UIView實例的坐標系統,UIView系統的原點在左上角,向右及向下增長。每個層的 實例都維護自己的坐標系統,定位所有的子層及繪圖時都是相對于這個坐標系統。 2????層的幾何坐標 層的幾何坐標系統圖: ? 2.1???? Bounds 沒有人不知道這東東,跳過。 2.2????Position CGPoint類型,指定了相對于父層(superlayer)的位置,由父層的坐標系統來表示。 2.3????Frame 改變層的frame時,層的position和bounds會相應的改變,但層并沒有frame屬性,它是由層的position, bounds, anchorPoint(參照點) 和transform計算而來。 2.4????Anchor point 參照點 今天的重點屬性。一定要理解。該屬性是在層的bounds范圍內的一個點,值為0.0到1.0。所有的轉換都是相對于這個點進行計算的。 下圖是三個anchor point的值: ??? 接下來,我們來看一下frame, bounds, position 及 anchorPoint之間的關系。 如下圖: ? ? 在 這個圖中,anchor point的默認值為(0.5,0.5),相當于層的中心。如果你設置frame為(40.0, 60.0, 120.0, 80.0),則position值會被自動設置為(100,100)。我們還可以看到旋轉和縮放的轉換計算都是相對于參照點進行的。 下圖的frame的大小和圖3是一樣的,但是anchor point為(0.0,0.0): ? ? 2.5????cornerRadius 當要繪圖,剪輯子層,畫邊框及陰影時,可以指定層所使用的半徑大小以產生圓角效果。 3????層的幾何坐標轉換 上面講了那么多,都是為這一小節坐鋪墊的。 CATransform3D結構體定義了一個用于旋轉,縮放,偏移,傾斜及應用透視變換 的三維坐標變換。原型如下: struct CATransform3D { ??CGFloat m11, m12, m13, m14; ??CGFloat m21, m22, m23, m24; ??CGFloat m31, m32, m33, m34; ??CGFloat m41, m42, m43, m44; }; typedef struct CATransform3D CATransform3D; 可以將該結構體賦值給層的兩個屬性transform 或者sublayerTransform,就可以實現坐標轉換。 你可以通過以下三個方法來創建和修改這個結構體: 1)????使用CATransform3D函數獲取 2)????直接修改結構體數據成員 3)????使用鍵值編碼和鍵路徑(key paths) 3.1????轉換函數 3.1.1????平移,縮放及旋轉轉換函數(以下如何進行坐標轉換計算實在是看不懂,線性代數太濫了,真后悔當初沒好好學,^&^。高手請指教): 示例: reflectionLayer.transform = CATransform3DMakeScale(1.0, -1.0, 1.0);? 該函數使層的Y坐標反轉,產生倒影效果。 論談里有一個關于CATransform3DMakeScale矩陣轉換的使用例子,大家可以看一下,對于理解矩陣轉換還是很有幫助的,地址:http://www.cocoachina.com/macdev/ca/2009/0611/33.html 系統也提供了反轉矩陣的函數CATransform3DInvert。 3.1.2????仿射轉換函數: ?? 3.1.3????測試是否是相等的函數:? 3.2????使用鍵路徑(key paths)修改轉換函數? 示例: myLayer.transform.rotation.x=0; [myLayer setValue:[NSNumber numberWithInt:0] forKeyPath:@"transform.rotation.x"]; |
轉載于:https://www.cnblogs.com/ylucy/archive/2011/06/29/2093437.html
總結
以上是生活随笔為你收集整理的(转) Core Animation 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js各类事件大全
- 下一篇: C# 正则表达式(备忘录)