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

我可以使用核心动画轻松完成此任务,但是当我调整视图大小时会出现一个奇怪的问题。如果我水平调整视图大小,我希望所有三个子视图都匹配新的宽度。如果我垂直调整它的大小,我希望子视图保持在原来的位置(即视图的底部边缘应该能够移动而不影响子视图的位置(当然剪裁除外)。这样做的原因是当 contentView 淡出时我需要折叠视图的大小。

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

我也能够通过将按钮设置为图层支持来以同样的方式使其行为不当......所以我认为层背衬与此有关。

这就像背景层在调整大小时粘在父视图上,并且即使坐标翻转也被向上推。

有任何想法吗?

有帮助吗?

解决方案

图层托管视图不应有子视图。请参阅 -(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:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top