层托管 NSView 的调整大小问题
-
26-09-2019 - |
题
我有一个层托管 NSView (-isFlipped = YES) 和三个层托管子视图。子视图是页眉、内容区域和页脚。页眉有一个显示三角形,它将折叠内容视图并仅显示页眉和页脚粘在一起。
我可以使用核心动画轻松完成此任务,但是当我调整视图大小时会出现一个奇怪的问题。如果我水平调整视图大小,我希望所有三个子视图都匹配新的宽度。如果我垂直调整它的大小,我希望子视图保持在原来的位置(即视图的底部边缘应该能够移动而不影响子视图的位置(当然剪裁除外)。这样做的原因是当 contentView 淡出时我需要折叠视图的大小。
实际发生的情况是,当高度改变时,所有三个子视图都被推到视图顶部上方......然后当水平线改变时弹回原位。它与视图和子视图的组合有关,因为如果子视图直接放置在窗口中,它们的行为就会正常。另外,我尝试在视图中添加一个按钮,它的行为正常。
我也能够通过将按钮设置为图层支持来以同样的方式使其行为不当......所以我认为层背衬与此有关。
这就像背景层在调整大小时粘在父视图上,并且即使坐标翻转也被向上推。
有任何想法吗?
解决方案
图层托管视图不应有子视图。请参阅 -(void)setWantsLayer:NSView 类参考中的文档:
根视图可能应该是一个图层支持的视图,而不是托管视图的图层?
不隶属于 StackOverflow