awakeFromNib中的setGeometryFlipped不起作用

时间:2013-08-15 07:47:37

标签: objective-c macos

我在 awakeFromNib

中写道
layer = [[CALayer alloc] init];
[layer setGeometryFlipped:YES];
...

此代码在MacOS 10.8上不起作用,但在10.7中有效 我在 initWithFrame 中尝试了 setGeometryFlipped ,并得到了相同的结果。

有人知道原因吗?

1 个答案:

答案 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。 它运作正常。