objective-c - 使 NSWindow 的内容变灰

标签 objective-c cocoa nsview nswindow

我有一个带有 2 个 NSViews(一个 NSSplitView 和一个自定义 NSView)的 NSWindow。访问数据以填充这些 View 可能需要一些时间。在此期间,我想将这些 View 的内容置灰。

我的第一种方法是使用黑色的第三个 NSView 覆盖其他两个,并通过更改其 alpha 值来实现变灰效果。但是我已经了解到具有兄弟 View 的层次结构是未定义的。

这里最好的方法是什么?

  • 缓存 2 个 View 的 NSBitmapImageRep,然后将它们替换为第 3 个 View ,使用缓存的图像作为背景
  • 分别为每个 View 设置 alpha 值(仍然不太确定如何获得灰色效果的黑色背景)
  • 我没有考虑过的事情

最佳答案

我会使用子窗口。将其内容 View 设置为纯黑色 View (希望在 subview 中包含状态和进度信息),并将其 alpha 值设置为所需的淡出,并将其添加为要淡出其内容的窗口的子窗口。

关于objective-c - 使 NSWindow 的内容变灰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1656049/

相关文章:

cocoa - 何时创建自定义 NSNotificationCenter?

NSTableView 单元格中的 cocoa NSView

iphone - 为什么在所有方法都是可选的情况下使用 Objective-C 协议(protocol)?

objective-c - 如何在 NSToolbar 中获取 NSComboBox 以将消息发送到数据源并委托(delegate)

c++ - 在 Objective-C 中转发声明 C++ 类

cocoa - 通过 Cocoa 添加 iCal 订阅

ios - 将 JSON 数据发布到现有对象中

cocoa - 将选项卡焦点移动到另一个 NSWindow 的 View ,然后再返回

objective-c - 听到keyUp事件了吗? : Overridden NSView method

swift - 操作系统 : Objects inside view based table views may only be connected to to the table view's delegate