私は、ビューコントローラのビューと、それを追加するためのプレースホルダビューを持つウィンドウとを含むオートレイアウトを有効にしたペンがあります。プレースホルダにはスーパービューやウィンドウ内の他のビューに関連する制約があり、ビューコントローラを操作する前に、ウィンドウのサイズを希望どおりに変更できます。後でペン先をロードしてプレースホルダのサブビューとしてそのトップレベルビューを追加し、プレースホルダの端に揃えるために手動で制約を作成します。Autolayoutは私のウィンドウのサイズを変更しています
いいえ、私のアプリではいくつかのインスタンスでこのパターンを使用していますが、そのような場合にはビューを追加した後にウィンドウのサイズが変更されます!ウィンドウの現在のサイズに拡大するビューの代わりに、追加されたビューの最小サイズに縮小しています。
私がこれを防ぐために見つけた唯一の方法は、ビューを追加して制約を作成するときに、プレースホルダとウィンドウの現在の状態の初期サイズを与えるためにビューのフレームを設定することです。これは大丈夫ですが、各エッジをプレースホルダスーパービューに合わせるだけで複雑な制約を定義できるようにしたいと考えています。私は、これらのケースのそれぞれについてフレーム算術をコード化したくありません。
何が起こっているのか知っていますか?ウィンドウがすでにプレースホルダのサイズを指定している場合は、それ以外の方法ではなく、現在のウィンドウサイズを優先させるためにサブビューを追加するときに何をする必要がありますか?
私はXcodeのIBウィンドウのポップアップメニューを見てきましたが、これはサブビューだけでなく、スーパービューにも影響するようですが、この機能に関連して何が起きていますか?私はそれについてまだ何も見つけていない。
でプログラム的にそれを設定することができますか? – codingFriend1
これをもっと明確にするために投稿を編集しました。私のプレースホルダーには、ウィンドウのサイズを変更する際に正しい動作を与えるための制約が既にあります。サブビューを追加するときに固定サイズの制約を追加すると、それが破られます。 –
制約が正しい場合は、ウィンドウのサイズ変更が機能します。 –