私のアプリは、NSScrollView
ドキュメントビューに垂直方向に積み重ねられた多数のNSTextViews
ファイルで構成されており、テキストが追加されると、それぞれが垂直方向にサイズ変更されます。
現在、これはすべてコードで管理されています。NSTextViews
サイズは自動的に変更されますが、サイズ変更をで観察し、すべてNSViewFrameDidChangeNotification
の原点が重ならないように再計算し、スーパービュー(スクロールビューのドキュメントビュー)のサイズを変更して、すべてが収まり、スクロールできるようにします。
これは、自動レイアウトの最適な候補であるかのようです。NSLayoutConstraints
最初のテキストビューとそのコンテナ、最後のテキストビューとそのコンテナ、および各テキストビューを相互に設定しました。次に、テキストビューが大きくなると、その下のテキストビューの原点が自動的に「プッシュダウン」されて制約が満たされ、最終的にドキュメントビューのサイズが大きくなり、誰もが満足します。
NSTextView
ただし、制約ベースのレイアウトでテキストが追加されるときに自動的に拡大する方法はないようです。以前にテキストが入力されたときに自動的に展開されたものとまったく同じNSTextView
ものを使用して、高さの制約を指定しない場合、0にデフォルト設定され、表示されません。制約を指定すると、> = 20のような不等式であっても、そのサイズのままになり、テキストが追加されても大きくなりません。
-intrinsicContentSize
これは、デフォルトでを返すNSTextViewの実装に関係していると思われます(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric)
。
だから私の質問:テキストのレイアウトに基づいてNSTextView
より意味のあるものを返すようにサブクラス化した場合、自動レイアウトは期待どおりに機能しますか?intrinsicContentSize
intrinsicContentSize
NSTextViewを垂直方向にサイズ変更するための実装に関する指針はありますか?