5

z オーダーは Cocoa の兄弟 NSView でどのように機能しますか? Apple のドキュメントと API で矛盾する情報源を見つけたので、私は混乱しています。(注: サブビューは明らかにその親ビューの上にレンダリングされます。ここでは兄弟ビューについて明示的に話しています)。

仮説A「はい、兄弟のzオーダーを定義できますNSViews

  • ではIB、ビューを互いの上に配置することができ、それらは常に期待どおりに合成されます。
  • Xcode のEditorメニューの下に「Send to Back」、「Send Forward」などのボタンがあります。
  • には、明確に定義された順序があることを暗示しているように見えるという名前のNSViewメソッドもあります。- (void)addSubview:(NSView *)aView positioned:(NSWindowOrderingMode)place relativeTo:(NSView *)otherView;

仮説 B : 「まさか、兄弟の z オーダーはNSViews実行時に定義されていません。機能する場合もあれば、機能しない場合もあります。信用しないでください!」

  • Apple のドキュメント (プログラミング ガイドを表示) の状態: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.

それで、それはどれですか?

4

2 に答える 2

3

はい、NSView兄弟オーバーラップできますが、Appleのドキュメントは古くなっています:レイヤーバックNSView兄弟はオーバーラップできますか?

また、zオーダーは、親ビューのsubviews配列内のサブビューの順序によって異なります。

于 2013-02-07T12:07:56.120 に答える