使用层主机NSView调整问题大小

时间:2010-09-28 16:13:34

标签: cocoa macos calayer nsview autoresize

我有一个图层托管NSView(-isFlipped = YES),带有三个图层托管子视图。子视图是标题,内容区域和页脚。标题有一个显示三角形,它将折叠内容视图,只显示页眉和页脚粘在一起。

我可以使用Core Animation轻松完成这项工作,但是当我调整视图大小时会出现一个奇怪的问题。如果我水平调整视图大小,我希望所有三个子视图与新宽度匹配。如果我垂直调整大小,我希望子视图保持原样(即视图的下边缘应该能够移动而不影响子视图的位置(当然除了剪切)。原因是我需要折叠当contentView淡出时视图的大小。

实际发生的情况是,当高度发生变化时,所有三个子视图都被推到视图顶部之上...然后在更改水平时快速回到原位。它与视图和子视图的组合有关,因为如果子视图直接放在窗口中,它们的行为就会正常。此外,我尝试在视图中添加一个按钮,它表现正常。

我能够以同样的方式使按钮出现异常,使其也支持图层支持...所以我认为图层支持与它有关。

就像支撑层被粘贴到父视图一样,因为它调整大小并且即使翻转坐标也会向上推。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

图层托管视图不应包含子视图。请参阅 - (void)setWantsLayer:NSView类引用中的文档:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html%23//apple_ref/occ/instm/NSView/setWantsLayer

根视图应该是图层支持的视图,而不是托管一个视图的层?