2

NSSplitViewDelegateいくつかのサイズ変更と制約の方法とともに、スプリングとストラットを使用して以下を実装しましたが、すべて希望どおりに機能します。私は現在、すべてのメッセージとメソッドを適切な制約autolayoutに置き換えることで、この同じシナリオを採用しようとしています。setFrameNSSplitViewDelegateautolayout

私のメイン ウィンドウのビューには垂直分割ビュー (私は 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 をターゲットにしています。

4

2 に答える 2

0

私は同じ問題を抱えていましたが、分割ビューに分割ビューを直接埋め込まないように、各分割ビューペイン内で NSViewControllers を使用して回避しました。それはより多くのコードでより複雑ですが、うまくいくようです。

分割ビューが分割ビューに埋め込まれている場合の解決策が見つからなかったので、誰かが答えを持っていれば興味があります.

于 2014-06-27T10:27:15.320 に答える