5

Interface Builderで、2つのサブビューを持つNSSplitViewを作成しました。左側面図の幅を固定したい。両方のサブビューの自動サイズ変更ルールを定義しようとしましたが、左側のサブビューでもウィンドウのサイズ変更時に幅が変更されます(分割ビューがウィンドウを埋め尽くします)。NSSplitViewのAutoresizesSubviewsプロパティが原因である可能性がありますか?(チェックを外すことはできません)。私に何ができる?

4

3 に答える 3

5

Interface Builderでこれを行うために私が見つけた最良の方法:

  • NSSplitViewをウィンドウにドロップします
  • 修正するカスタムビューを選択します
  • Xcodeメニューに移動し、[エディター]>[ピン]>[幅]を選択します
  • 属性インスペクタの定数を、パネルを固定するサイズに調整します

もちろん、冒険心があれば、上記のようにコードを使用してこのレイアウト制約を追加することもできます。

于 2013-05-22T23:04:29.523 に答える
2

必要な動作には、NSSplitViewのデリゲートで実行できるコードが必要でした。ただし、BWToolKitを使用して同じ結果を得ることができます。

于 2010-01-10T22:37:12.077 に答える
0

NSLayoutConstraintで動作するはずだと思いますが、現時点では:)で動作しています。

編集:

たぶん、コメントヘイデンに基づいて私の答えの詳細を提供するために。制約は、コードまたはIBで定義できます。IBで左側のサブビューを選択し、幅の制約を定義する右下隅の制約ボタンをクリックします。この新しい制約を選択すると、幅を設定して、同じにする必要があると言って、好きなサイズを設定できます。

2番目の方法は、コードでNSLayoutConstraintオブジェクトを作成することです。これは、このように行います(これは単なる例であり、固定幅ではなく定義します)。

// define for the view: Constraint and AutoresizingMask option
NSView *view = self.view;
[view setTranslatesAutoresizingMaskIntoConstraints:NO];  // disable AutoresizingMask
NSDictionary *views = NSDictionaryOfVariableBindings(view);
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[view(>=140,<=220)]" options:0 metrics:nil views:views]];

一般に、このトピックに関するドキュメントは、自動レイアウトという用語で見つかります。これを使用するには、自動レイアウトを有効にする必要があり、この機能は古い自動サイズ設定機能を置き換えます。(したがって、コードで自動サイズ変更マスクを無効にします)。

この機能はまったく新しいもので、複雑なこともできますが、勉強する価値があると思います。

于 2012-07-14T13:17:41.647 に答える