NSSplitView のリサイズにおける優先度


例えばこのようなスプリットビューがあったとき、ウインドウのリサイズに合わせてどちらのペインを伸縮させるかという設定を行うことができます。

Interface Builder には Holding Priorities という設定項目が用意されています。標準値では 250 という値が設定されています。Auto Layout の制約とよく似ていますね。

コードではこのようなメソッドを使用します。

NSSplitView
- (void)setHoldingPriority:(NSLayoutPriority)priority forSubviewAtIndex:(NSInteger)subviewIndex

仮にプライオリティの値が同一(Left = Right)の場合、いずれのペインも同じ割合で伸縮するようになります。プライオリティの値を大きくするとそのペインはなるべく大きさを保とうとします。

画像のようなサイドバーを持つ UI では、ウインドウリサイズ時にはサイドバー側はなるべく幅を保ち、右ペインを伸縮するようにしたいものです。そのような場合は Left のプライオリティを Right よりも高くしておけば望んだ動きになります。Right が250なので、+1した251で十分です。

ちなみにペインの最低サイズを決めるには Auto Layout でビューの幅を Greater Than or Equal で設定すれば良いです。