Question

I have an NSWindow with 2 NSViews (an NSSplitView and a custom NSView). Accessing the data to populate these views can take some time. During this period, I'd like to gray out the content of these views.

My first approach was to have a black third NSView that covered the other 2 and achieve the graying out effect by changing its alpha value. However I've since learned having a hierarchy with sibling views is undefined.

What is the best approach here?

  • Cache the NSBitmapImageRep of the 2 views, then replace them with the 3rd view, using the cached image(s) as background
  • Set the alpha value for each view separately (still not quite sure how to get the black background for the graying effect)
  • Something I haven't considered
Was it helpful?

Solution

I'd use a child window. Set its content view to a plain black view (hopefully with status and progress information in subviews), and its alpha value to the desired fade-out, and add it as a child window of the window whose content you want to fade out.

OTHER TIPS

I'd teach the views how to draw themselves in a disabled state, but there are other suggestions here:

How can I darken everything displayed in a single NSView?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top