NSSplitViewDelegate
いくつかのサイズ変更と制約の方法とともに、スプリングとストラットを使用して以下を実装しましたが、すべて希望どおりに機能します。私は現在、すべてのメッセージとメソッドを適切な制約autolayout
に置き換えることで、この同じシナリオを採用しようとしています。setFrame
NSSplitViewDelegate
autolayout
私のメイン ウィンドウのビューには垂直分割ビュー (私は OuterSplitter と呼びます) が含まれており、OuterSplitter のスーパービューに対して、上下左右の前後のスペース制約がゼロに設定されています。
OuterSplitter の右側のペインには、(いくつかあるものの中で) 別の垂直分割ビュー (私は InnerSplitter と呼んでいます) が含まれています。このビューには、InnerSplitter の上下左右の前後のスペース制約がゼロに設定されていますsuperview
(つまり、OuterSplitter の右側のペイン) )。
OuterSplitter の左側のペインと、InnerSplitter の左側と右側の両方のペインに公称最小幅の制約を設定しました。
メイン ウィンドウのサイズが変更されている場合、最小幅の制約の 1 つが有効にならない限り、拡大と縮小のすべて (またはほとんど) が InnerSplitter の左ペインに適用されることが望ましい動作です。したがって、OuterSplitter の左ペインの分割ビュー保持優先度を 260 (最高) に、右ペインの分割ビューを 250 に設定しました。また、InnerSplitter の左ペインの保持優先度を 245 (最低) に、右ペインの保持優先度を 255 にします。
WWDC 2012 のセッション 232 のビデオを見て、正しい方向に進んでいると思いました。私のautolayout
コンストレイントはほとんど希望どおりに機能しますが、私のスプリングとストラット バージョンでは発生しない非常に奇妙な動作が 1 つあります。
InnerSplitter の分割バーが可能な限り右にあり (InnerSplitter の右ペインが最小サイズ)、かつ OuterSplitter 分割バーが可能な限り左にない場合、InnerSplitter の分割バーをさらにドラッグしようとすると、 OuterSplitter の分割バーが予期せず左に移動し、InnerSplitter の左ペインが拡大し、OuterSplitter の左ペインが縮小します。その場合、サイズ変更は行われないことを期待しています。
右に固定されている InnerSplitter の分割バーを引っ張ると、OuterSplitter の分割バーが動かなくなることがありますか? その場合、どのような制約を追加する必要がありますか? それとも、いくつかのNSSplitViewDelegate
メソッドがまだ必要ですか? ありがとう。
ところで、私は Xcode 4.6.3 を使用しており、OSX 10.8 をターゲットにしています。