我有一个看起来像这样的视图层次结构:
所以基本上我有一个带有子视图的NSSplitView,它包含一个滚动视图(用于表视图)以及一个包含3个子视图的页脚视图。需要注意的一些重要事项:
NSClipView
的{{1}}是一个特殊的子类,是图层托管视图,并使用NSScrollView
作为支持层。这种布局让我的行为非常不稳定。以下是我正在获得的三个不同的场景,每次启动应用程序时都会随机化。
1)一切都好看。背景视图和所有内容都在那里:
2)按钮显示正常,但背景视图似乎部分透明:
3)背景视图显示正常,但按钮消失了:
绝对没有代码在每个场景之间发生变化。我只是停下来再次运行应用程序。我确保在运行时我没有更改与不透明度相关的任何内容。我在运行时唯一要做的就是在视图上设置背景颜色和图像。
编辑:我感觉重叠的视图可能会造成麻烦,所以我测试时没有重叠并得到相同的结果。
编辑2:这似乎是图层支持视图图层的CAScrollLayer
存在问题。订单是乱码和随机的。如果我手动强制图层的zPosition到正确的值以匹配子视图顺序,那么一切都很好。不幸的是,除了设置zPosition
之外,我找不到更简洁的方法。
答案 0 :(得分:2)
这似乎是OS X的错误。 A radar has been filed。同时,这是我找到的最好的解决方法(其中view
是所有兄弟视图的超级视图):
view.subviews = [view.subviews copy]
触发subviews
的setter会在视图图层上设置正确的zPosition
。