0

複数のタブを持つ NSTabView があり、それぞれに NSScrollView が含まれています。scollviews では、autolayout と制約を使用してサイズ変更されたカスタム ビューを動的に配置します。

ここで、カスタム ビューを例に追加するとします。tab1 を開き、このタブをアクティブにしてウィンドウのサイズを変更すると、すべてが正常に機能し、自動レイアウトは文句を言いません。

一方、カスタム ビューを tab1 に追加すると、別のタブに切り替えて、ウィンドウのサイズを変更し、次のメッセージで autolayout が壊れて tab1 に戻ります。

Unable to simultaneously satisfy constraints:
(
    "<NSAutoresizingMaskLayoutConstraint:0x4011d8f60 h=-&- v=-&- H:|-(0)-[FlippedDocumentView:0x4011b76e0]   (Names: '|':NSClipView:0x40120eb80 )>",
    "<NSLayoutConstraint:0x4012a5c80 H:|-(10)-[TextViewModuleView:0x401236e80]   (Names: '|':FlippedDocumentView:0x4011b76e0 )>",
    "<NSLayoutConstraint:0x4011148e0 H:[TextViewModuleView:0x401236e80]-(10)-|   (Names: '|':FlippedDocumentView:0x4011b76e0 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x4011d8f00 h=-&- v=-&- H:[FlippedDocumentView:0x4011b76e0]-(0)-|   (Names: '|':NSClipView:0x40120eb80 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x4011d5e00 h=--& v=--& H:[NSClipView:0x40120eb80(0)]>"
)

私の質問は、アクティブなタブでは自動レイアウトが正常に機能し、非アクティブなタブでは機能するのはなぜですか?


更新: バグだと確信しています。自動レイアウト モードで IB を使用するだけで可能な限り単純なプログラムを作成しました (コードはまったくありません)。

  • タブ ビューをドラッグします (先頭、末尾、上下の制約が自動的に取得されます)

  • タブの1つにスクロールビューをドラッグします(自動的に先頭、末尾、上下の制約を取得します)

  • スクロールビューにテキストフィールドをドラッグします(いくつかの自動制約を取得します)が、ウィンドウでテキストフィールドのサイズを変更できるように、先頭、末尾、上部、および下部の制約を設定します

したがって、スクロールビュー=>テキストフィールドのあるタブが選択されている場合、ウィンドウのサイズを変更できます-問題ありません。ただし、他のタブをアクティブにすると、ウィンドウのサイズを変更してから、スクロール ビューでタブをアクティブにすると、以前に報告したのと同様のメッセージが自動レイアウトに表示されます。実際、先行制約と後続制約のみが設定されている場合も同じことが起こります。

誰かがそれを再現しようとすることができますか?

4

1 に答える 1