如果你想翻转它们的坐标系,你可以将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