私は2つのビューを持っています。MapKitView と UILabel。自動レイアウトがオンになっています。
MKView が画面全体を占めるようにし (これは正常に動作するようです)、UILabel が画面の下部からの自動距離のままであるが、水平方向に中央に配置されるようにします。UILabel の内容はプログラムで変更され、その後sizeToFit
.
UILabelを呼び出しsizeToFit
た後、中央に配置されなくなりました。幅は右側 (トレーリング エッジ) からのみ調整され、左側が一定の位置に保たれているようです。
私の理解では、IBで適切な制約を設定するだけで、私が望むものを達成できるはずですか?
ラベルに適用した制約は次のとおりです。
Height Equals: 32
Width Equals: 166
Bottom Space to: Superview Equals: Default
Align Center X to: Map View
最後の「Align Center X」だけがユーザー制約で、残りは IB が提供します。
私は多くのことを試しましたが、あまり理解していませんでした (おそらく私の問題です!)。
setTranslatesAutoresizingMaskIntoConstraints: NO
ラベルに電話しました。ラベルの を設定しましたautoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
。preferredMaxLayoutWidth
ランダムな値に設定してみました。needsUpdateConstraints
ラベルを呼び出します。への呼び出しを入れてみsizeToFit
ましたviewDidLayoutSubviews
。
私は、これにどのようにアプローチすべきかをもう少し理解する必要があるという結論に達しました。Auto Layout がオンのときに呼び出すものではsizeToFit
ないでしょうか。を呼び出した後、何らかの方法で自動レイアウトを作成する必要がありsizeToFit
ますか? シミュレーターを回転させるとラベルが中央に表示されるように見えるので、突っ込む可能性があることに気付きましたか?
Apple Auto Layout ガイドを読み直しましたが、何が間違っているのかまだわからず、提案されたデバッグのヒント (visualizeConstraints など) が iOS では機能しないようです。
余裕のある手がかりをありがとう。