如果你想翻轉它們的座標系,你可以將CALayers的transform
屬性設置爲適當的變換,但是請注意,這可能會翻轉他們的contents
的繪圖(我沒有測試過,但它是有意義的這將是真實的)。我認爲與UIView相關的CALayer共享相同的座標系實際上可能完全是錯誤的。也可能是CALayers使用與UIViews相同的座標系(即它們從不垂直翻轉),但我認爲它們是因爲CoreGraphics使用相對於UIKit的翻轉座標系。
一個簡單的測試方法是添加一個屏幕大小的CALayer作爲視圖圖層的子圖層,然後添加另一個小CALayer作爲其子圖層。您可以將其設置爲(0,0,320,100),並查看它是否顯示在iPhone屏幕的頂部或底部。這會告訴你Y軸在哪個方向上進行CoreAnimation。
- (void)viewDidLoad {
[super viewDidLoad];
CALayer *rootLayer = [CALayer layer];
rootLayer.frame = self.view.layer.bounds;
CALayer *smallLayer = [CALayer layer];
smallLayer.frame = CGRectMake(0, 0, rootLayer.bounds.size.width, 50);
smallLayer.backgroundColor = [UIColor blueColor].CGColor;
[rootLayer addSublayer:smallLayer];
[self.view.layer addSublayer:rootLayer];
}
我只是執行這個測試自己,似乎CALayers實際使用相同的座標系統UIViews,所以我斷言的CALayer的翻轉Y軸是絕對錯誤的。但是,如果直接使用CoreGraphics繪圖,請注意CoreGraphics 確實使用翻轉的Y軸(儘管在繪製UIView子類或我假設爲CALayer委託時,CoreGraphics上下文已翻轉以匹配UIView (或CALayer的)座標系)。
所以簡短的回答,如果你做到了這一點,CALayer的座標系應該與其對應的UIView的座標系相匹配。
凱文,如果你有時間,你會介意看我在下面我列後的主線程。你似乎對此非常瞭解,並且對任何見解都非常感謝。再次感謝 – 2009-01-05 18:29:46