首页 > 解决方案 > Cocoa:如何正确隐藏 NSImageView 下面的其他视图?

问题描述

我有一个包含几个子视图(NSButton、NSTextField、NSPopUpButton)的视图和一个带有微调器图标的 NSImageView,当从网络上检索数据时,它应该显示在其他视图的顶部。

要在我设置的顶部显示 NSImageView

imageViewSpinner.wantsLayer = true
imageViewSpinner.layer?.backgroundColor = NSColor.windowBackgroundColor.cgColor

问题是,焦点边框和 PopUpButtons 仍然可以通过 NSImageView 访问/发光(参见附加视频)。

为了解决这个问题,我可以遍历所有其他子视图并将它们设置为“isHidden”或“disabled”,但我想知道是否有更简洁的解决方案来解决这个问题,例如将 NSImageView 定义为最顶层而没有通过?

视频

标签: cocoashow-hidensimageviewtopmost

解决方案


您可以将所有其他视图放在一个容器视图中并隐藏它。

您还可以使用无选项卡选项卡视图以编程方式在视图子层次结构之间切换。(这基本上实现了同样的事情。当有两个以上的视图要管理时会更好。)


推荐阅读