過去数日間に行った調査を共有したいと思います。NSSplitView を部分的に希望どおりに動作させることができます。まだ完全な解決策ではありません。しかし、うまくいけば、誰かが私ができない部分に答えるのを手伝ってくれるでしょう.
「メモ」アプリは、単一の NSSplitView を使用する可能性があります。

上のスクリーンショットは、Xcode 6 Veiw Debugger モードで実行されている「Notes」アプリを示しています。
MainSplitView と呼ばれる NSSplitView のサブクラスです。
仕切りのサイズが変更されたときに「Notes」アプリの分割ビューがどのように動作するかを調べるために、Xcode Instruments の「Cocoa Layout」機器で開き、仕切り 0 を右に移動したときの制約イベントを調べます。

制約イベントを調査し、サンプル アプリの元のバージョンを実行して生成されたログと比較しています...

主な違いは...右端のサブビューと分割ビューの左端の間の制約は、「メモ」アプリで「低い」優先度を持つことがわかりました。私のサンプルアプリでは、同様の制約に「必須」の優先度があります。
そこで、独自の MainSplitView を実装してみました。「addConstraints:」メソッドをオーバーライドして、制約に低い優先度が設定されるようにします。
- (void)addConstraints:(NSArray *)constraints {
NSLog(@"adding constraints: %@", constraints);
NSLayoutConstraint * theConstraint = constraints.firstObject;
if ( theConstraint.firstItem == self.subviews.lastObject && theConstraint.secondItem == self ) {
theConstraint.priority = NSLayoutPriorityDefaultLow;
[super addConstraints:@[theConstraint]];
} else {
[super addConstraints:constraints];
}
NSLog(@"========== constraings affecting layout ===========");
for (NSView * theView in self.subviews) {
NSLog(@"view: %@\n%@", theView, [theView constraintsAffectingLayoutForOrientation:NSLayoutConstraintOrientationHorizontal]);
}
}
コードはこちらにあります。
変更後、私のサンプル アプリでは、分割線 0 をドラッグすると、中央のサブビューが右に押し出され、幅が維持され、右端のビューが圧縮されます。
しかし今...私は別の問題に遭遇します...

分割線 0 を移動するたびに、最大でも分割線 1 の開始位置にしか移動できません。
これは別の制約構成の問題ですか? または、カスタマイズする必要がある NSSplitView のその他の初期動作はありますか?
ヘルプ/アドバイスはありますか?
ありがとうビル