5

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: を呼び出す必要もあります。

リンク: http://developer.apple.com/library/mac/#releasenotes/UserExperience/RNAautomaticLayout/#//apple_ref/doc/uid/TP40010631-CH1-SW14

どんな助けでも大歓迎です。

更新:これは、問題のLayoutTest.zip を示すサンプル Xcode プロジェクトへのリンクです。

4

1 に答える 1