I’m working on a Cocoa application, and I’ve run into a situation where I would like to have two NSView objects overlap. I have a parent NSView which contains two subviews (NSView A and NSView B), each of which can have several subviews of their own.
Is there a proper way to handle this kind of overlap? NSView B would always be ‘above’ NSView A, so I want the overlapped portions of NSView A to be masked out.
If your application is 10.5-only, turn on layers for the views and it should just work.
If you’re meaning to support 10.4 and below, you’ll need to find a way not to have the views overlap, because overlapping sibling views is undefined behavior. As the View Programming Guide says:
I’ve seen some hacks that can make it kinda work sometimes, but it’s not anything you can rely on. You’ll need to either make View A a subview of View B or make one giant view that handles both of their duties.