自動レイアウトが有効になっているペン先に、ビューコントローラのビューと、それを追加するためのプレースホルダービューを含むウィンドウがあります。プレースホルダーには、ウィンドウ内のスーパービューやその他のビューに関連する制約があり、ビューコントローラーを使用する前に、ウィンドウに合わせてプレースホルダーのサイズを変更します。後で、ペン先をロードして、そのトップレベルビューをプレースホルダーのサブビューとして追加します。また、手動で制約を作成して、プレースホルダーの端に揃えます。
すべて順調です。アプリ内のいくつかのインスタンスでこのパターンを使用していますが、一部のケースでは、ビューを追加した後、ウィンドウのサイズが変更されます。ビューがウィンドウの現在のサイズに拡大するのではなく、追加されたビューの最小サイズに縮小されます。
これを防ぐために私が見つけた唯一の方法は、ビューを追加してその制約を作成するときに、プレースホルダーとウィンドウの現在の状態の初期サイズを与えるようにビューのフレームも設定することです。場合によっては問題ありませんが、各エッジをプレースホルダーのスーパービューに揃えるだけの、より複雑な制約を定義できるようにしたいと思います。これらの各ケースのフレーム演算をコーディングしたくありません。
誰かが何が起こっているのか知っていますか?ウィンドウがすでにプレースホルダーのサイズを指定している場合(その逆ではありません)、現在のウィンドウサイズを優先させるためにサブビューを追加するときに何をする必要がありますか?
XcodeのIBウィンドウのポップアップメニューを見たことがありますが、これはサブビューとスーパービュー(すべてのペン先で前者に設定)にのみ影響する制約に関するもののようですが、この機能に関連して何が起こっているのでしょうか?それについてはまだ何も見つかりませんでした。