Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 288 - Autolayoutの実習6 細かい調整

Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena

UIImageViewに実際のイメージ「lifel8」をロード(アトリビュート・インスペクタのImageから選択)している状態です。

ここで下段に並ぶオートレイアウト・ボタンの左から3番目、「Resolve Auto Layout Issues」の「Update Frames」を選ぶと*1、実際の位置に動きます。

f:id:yataiblue:20150423065605j:plain

上部のフィールドやラベルに重なってしまいました。これはイメージと上にあるオブジェクトの位置関係の決まり事(コンストレイント)を設定していないからです。

ためらわず、Undo(Cmd + z)して元にもどいてイメージを「Ctrl + ドラッグ」して、上部になる「login」ボタンでリリース*2して、ポップアップメニューから「Vertical Spacing」を選びます。

f:id:yataiblue:20150423070337j:plain

垂直にあるオレンジラインをダブルクリックするとマジック・ナンバーが現れるので「Use Standard Value」を選びます。再びUpdate Framesをします。

f:id:yataiblue:20150423070854j:plain

ちゃんとレイアウトは収まりがよいように見えます。

しかし、右上には黄色い警告サインがありクリックすると「8 views are vertically ambiguous」というメッセージが現れるだろう*3


f:id:yataiblue:20150423122419j:plain

具体的な情報を知るためにすることは?

ドキュメント・アウトラインを見ることです。

f:id:yataiblue:20150423121852j:plain

ここにレイアウト上の問題点が列挙されます。

Hugging PriorityとかCompression Resistance Priorityという項目が並んでいますね。

明日説明します。

*1:Upadte Framesとはオブジェクトの位置がコンストレイントで決めた位置から見た目がズレているので画面上で修正するといこと

*2:Change Securityボタンではありません。このボタンは上下関係のコンストレイントが設定されていないのでズレが生じます

*3:コンストレイントの調整により少し数は違うかもしれません。