Is there a proper way to handle overlapping NSView siblings?

后端 未结 5 472
终归单人心
终归单人心 2020-11-27 06:35

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

5条回答
  •  醉梦人生
    2020-11-27 06:52

    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:

    For performance reasons, Cocoa does not enforce clipping among sibling views or guarantee correct invalidation and drawing behavior when sibling views overlap. If you want a view to be drawn in front of another view, you should make the front view a subview (or descendant) of the rear view.

    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.

提交回复
热议问题