OSX 10.7 の時点で、NSView の手動レイアウトを実行する場合は、layout
メソッドをオーバーライドして実行する必要があります。このメソッドの呼び出しをスケジュールする場合は、次のようにするだけです。
[myView setNeedsLayout:YES]
iOS ではこのパターンに精通していますが、OSX では機能しないようです。カスタム NSView を作成して実装しましlayout
たが、呼び出されないようです。これまで。サブビューを追加した後でも、呼び出した後でsetNeedsLayout:YES
もなく、理由もわかりません。私は手動で呼び出すことができlayout
、物事は期待どおりに機能しますが、ドキュメントにはこれを行うことは決してないと書かれています。
Xcode から:
- (void)layout
Override this method if your custom view needs to perform custom
layout not expressible using the constraint-based layout system. In
this case you are responsible for calling setNeedsLayout: when
something that impacts your custom layout changes.
オンライン ドキュメントから:
カスタム レイアウトを実行する場合にのみ、レイアウトをオーバーライドする必要があります。その場合は、カスタム レイアウトにフィードする何かが変更されたときに setNeedsLayout: を呼び出す必要もあります。
どんな助けでも大歓迎です。
更新:これは、問題のLayoutTest.zip を示すサンプル Xcode プロジェクトへのリンクです。