2

サイズクラスがオンの間に、インターフェースビルダーを使用してView Controllerを作成しました。UIViewが画面より広い理由

ビューには、ビューコントローラのビューであるスーパービューの先頭と末尾の制約があります。このようなもの。

| - (14) - (view) - (14) - |

私はアプリを実行しているときに見栄えがよく、両面に14ptのインセットがありますが、幅を印刷すると画面幅より広い576が得られます。インターフェイスビルダーでは、ビューのフレーム幅は576(サイズクラスがオンのときのキャンバスサイズ)に設定されますが、実行時に制約がこれをオーバーライドする必要があります。

どのように表示が正しく表示されますが、フレームの幅が大きくなっていますか?

答えて

1

いつ幅を印刷しましたか?私はViewDidLoadで推測します。 Interface Builderを使用してサイズクラスを有効にするので、デフォルトでは、幅と高さは600x600です。ビューがロードされた時点で、ビューは表示されるまでサイズがInterface Builderからサイズを参照しますが、画面サイズに応じて自動的にスケーリングされます。その理由はあなたのUIViewは画面より広いです。

ここでは、Interface Builderを使用して構築されたビューコントローラからサイズクラスを有効にする方法を示します。た負荷をiPhone 6S上で実行プラスビューで

【サイズ] {{0、0}、{600、600}}図で

【サイズ】表示された{{0、64}、{414、 623}}

0

あなたはあなたのビューを更新するには、以下の方法を使用できます。

//描画サイクルが起こる前に、レイアウトを実行できるようにします。 layoutIfNeededはレイアウトを早期に強制する。

[view setNeedsLayout];

[view layoutIfNeeded];

+0

私はすでにこれをやっています –

関連する問題