我有一个主窗口控制器,它是一个带有滚动视图(蓝色矩形)的NSWindowController(金色矩形),以及一个由NSViewController(黄色矩形)控制的子视图。

根据用户选择,相应的nib文件将通过NSViewController加载到子视图中。

不幸的是,由于设计限制,滚动视图将根据用户动作被隐藏或取消隐藏。不幸的是,该滚动视图必须与视图重叠。

视图之一也是qtmovielayer,所以我对主窗口控制器和所有元素进行了层备份。图层支持设法使滚动视图出现在qtmovielayer的前面。

当一切正常时,它看起来就像左侧的图像。但是,当我启动该应用程序时,滚动视图出现在子视图后面的1/5次,如右图所示。我一直在努力寻找大约一个半星期的时间,以了解发生这种情况的原因,而我却因秃顶而不会撕扯和拉扯头发。

我在网上可以找到的唯一资源是设置z层的位置,但是问题仍然存在。

如果有人对为什么会发生或如何解决有任何想法,将不胜感激。

最佳答案

您要使滚动视图(蓝色)成为子视图(黄色)的子视图。子视图始终显示在其父视图的“前面”。像全家福一样,孩子们总是站在父母面前:)因此,通过向黄金视图发送消息到addSubview,在viewDidLoad中使用addSubView方法,而不仅仅是在主视图中添加蓝色。

10-08 09:13