この記事の対象者
- Autolayout のチュートリアルや入門書を読んだけど、実務のレイアウト作成が作りづらいと感じている人
- iOS のUI作成のガイドラインを作成したい人
- 他の開発者が Autolayout をどう使っているか知りたい人
公式ドキュメント
Storyboardのノウハウ
- StoryboardにViewが多いとXcodeで開くときに時間がかかる
- Storyboardは分割して使用しよう
- 可能ならXibにしよう
- SegueをStoryboard上で使うと動作が重くなるので、画面が少ないアプリ以外ではやめておこう
- 分割すると、Storybaordで何をやっているかわからなくなるが、動作が重いデメリットは大きい
- UINavigationControllerが必要なときはStoryboardに配置しよう
- コードでUINavigationControllerを制御するのは結構大変
- Storybaordはコードレビューや差分を見るのが難しいので、gitで同時に2人以上で開発するのは回避しよう
View作成時のノウハウ
- UIStackView を使おう
-
Content Hugging Priority
とContent Compression Resistance Priority
の違いを理解しよう - Constraints だけで作られている、名前と住所が表示されいるコンテンツに、性別が加わると Constraints を作り直さなければならない、UIStackView を利用すれば UILabel を追加するだけ対応できる
- UIStackView で複数のマージンを持ちたい場合は、UIView を追加して、 Margin View としたほうが楽で見やすい
-
- 名前を明示的に指定しよう、Constraints の関係がわかりやすくなる(SS)
- Constraints に関連されている View が View という名前だとわかりにくい
- 色はAssetsに登録しよう(SS)
- UILabel の AttributeString を Xib で変更するとバグることがある
- コードで変更するか、Xib をテキストファイルで開いて修正するしかない
うまくいかないときは
- UIDebugViewでViewの構造を確かめる
-
hogeView?.translatesAutoresizingMaskIntoConstraints = false
になっているか? - CAGradientLayerで透過しない
- CAGradientLayerをコード上で変更していないか?
その他
- Autolayoutの配置がおかしいとシミュレーターで正常に見えても、実機でレイアウトが崩れていることがある
- 特にUIScrollViewとUIStackViewを組み合わせたときに発生する