我在 awakeFromNib :
中写道layer = [[CALayer alloc] init];
[layer setGeometryFlipped:YES];
...
此代码在MacOS 10.8上不起作用,但在10.7中有效 我在 initWithFrame 中尝试了 setGeometryFlipped ,并得到了相同的结果。
有人知道原因吗?
答案 0 :(得分:0)
我在“适用于OS X v10.8的应用套件发行说明”中找到了一些提示:
•在10.8,AppKit将控制10.8之前的翻转视图 将通过每次调用更新它来明确控制图层的位置 to setFrameSize:。但是,这与允许CoreAnimation相冲突 在没有输入的情况下在后台线程上执行帧大小动画 AppKit的。为了解决这个问题,AppKit现在控制了-geometryFlipped 支持CALayer。在10.8之前,anchorPoint也被设置为 (0,0)或(0,1) - 根据superview的不同而不同 isFlipped与否。在10.8,图层的帧现在等于 视图的框架。 anchorPoint也始终设置为(0,0),因为 这些职位现在是平等的。为了正确控制翻转 层的状态,在NSView上覆盖-isFlipped ...... CALayer上的以下属性(“层托管”或“图层支持”时): geometryFlipped,bounds,frame(隐含),position,anchorPoint, 变换,阴影*,隐藏,过滤器和compositingFilter。 geometryFlipped仅对在10.8及更高版本上链接的应用程序进行更改。 使用适当的NSView封面方法来更改这些属性。
所以,我使用了覆盖isFlipped方法而不是geometryFlipped。 它运作正常。