すべてのNSImageViewの名前を保持するNSTableViewがあり、NSImageViewが追加された順序に応じて、最後の名前が前面に表示されます。
しかし、ユーザーがNSImageViewを別のユーザーの前に表示できるようにしたい場合は、どうすればよいでしょうか。
前もって感謝します。
すべてのNSImageViewの名前を保持するNSTableViewがあり、NSImageViewが追加された順序に応じて、最後の名前が前面に表示されます。
しかし、ユーザーがNSImageViewを別のユーザーの前に表示できるようにしたい場合は、どうすればよいでしょうか。
前もって感謝します。
NSView リファレンス ページで説明されているように、ビューのサブビューの z オーダーは、ビューのsubviews
配列内の順序によって指定されます。を使用して他のサブビューに関連する新しいサブビューを挿入できます。また、プロパティを取得し、必要に応じてビューを並べ替え、新しい順序を設定するために呼び出すこと-addSubview:positioned:relativeTo:
で、既存のサブビューを並べ替えることができ ます。subviews
-setSubviews:
具体的には、ドキュメントは次のように述べています。
サブビューの順序は後ろから前にあると見なすことができますが、これは無効化や描画動作を意味するものではありません。
あなたが求めているのは、ビューの z オーダーを制御する方法だと思います。
歴史的なパフォーマンス上の理由から、これは (iOS の UIKit とは異なり) AppKit では十分にサポートされていません。
これに対する一般的なアプローチ (最近の OS X リリースで) は、ネイティブで z オーダーをサポートするコア アニメーション (特にCALayer
) を使用することですが、これは必要なものに対しておそらくやり過ぎです (いずれにせよ学習が必要になります)。あなたのための曲線)。
あなたは実際に何をしようとしていますか?これらの画像 (画像ビュー) は正確に重なり合っていますか? その場合、最も簡単な (そしてパフォーマンスがはるかに優れた) アプローチは、単一NSImageView
のものを用意し、それに送信-setImage:...
して表示される画像を変更することです。