![見出し画像](https://assets.st-note.com/production/uploads/images/94906712/rectangle_large_type_2_7488bfeafae93c0395d741dbaa77b732.png?width=1200)
【徒然iOS】気ままにUIKit15〜AutoLayout導入編 AutoLayoutとは〜
概要
このマガジンは四十を過ぎたおっさんが、
を参考にStoryboardでiOSアプリを完全に趣味で楽しんでいるだけな記事を気ままに上げてます。
今回
をやる〜〜〜!
お断り
で一日悩んだんだけど、まとめて一気にやると
果てしなく長くなりそう
1個ずつきちんとやった方が初めての人にはいい
と思ったので、記事の順番でゆっくり記事にしていく〜〜〜
なぜか
勘のいい人は気づいてると思うけど、
今までのビューは、
AutoLayoutを施していないから、
画面上部
![](https://assets.st-note.com/img/1672879174796-lGrrkob3QH.png?width=1200)
画面左部
![](https://assets.st-note.com/img/1672879215917-iDbfx3PKmE.png?width=1200)
で既に60個ものエラーが軽微なエラー
が出てる👀
これ、公開申請をする前に、、、
作法としてエラー警告は色に関わらず消す
のが普通だから、実際にやったことがないからAppleがこのまま出して道断するかは分からないけど、
これだけで
公開拒否=リジェクト
を喰らう可能性が高い。なので、
動けばいい。
👉で、AutoLayoutを疎かにすると、公開まで最終的に考えているならば
痛い目を見ることになる
(個人的には、AutoLayoutを沼と読んでた時期もあったな)
なので、
でスクリーンショットだけ載せてたAmachaClipsは、プロジェクトファイルを見せると、
![](https://assets.st-note.com/img/1672879578867-gNnk3pl1sW.png?width=1200)
AutoLayout対策をしっかりやってるから、一切、黄色と赤の警告エラーが出てないようにしてる🕺
つまり、
UIKitでのiOSアプリ開発では、AutoLayoutが最大の肝になると言っても過言ではないくらい重要👀
SwiftUIでは、
VStack、HStack、ZStackなんかでStackて概念でビューを作り上げる
Xibファイルとの連携って概念がない
👉AutoLayoutを気にしなくいい
ようになっているので、あまり気にすることはなくなってるんだけどね。
それでも、
画面を縦向き、横向きにした時にレイアウトを変えたい場合が出てくるので、SizeClassで使い分けはしないといけない場合も出てくるけど、
コードベースでビューを作っていけるから、非常に簡単にレイアウトの使い分けができたりする。
と、まあ話が長くなったけど、いざ今回の操作へ、、、💦
前準備
念の為、バックアップ
新しいクラス
ビューコントローラの追加
イニシャルビューの変更
をいつも通りやってから本題へ💃
![](https://assets.st-note.com/img/1672880059107-PVMbpKxUWa.png?width=1200)
本題
⒈ボタンを配置
![](https://assets.st-note.com/img/1672880153865-abL3YuttxW.png?width=1200)
⒉シミュレータを実行して、ローテートを変更してみる
![](https://assets.st-note.com/img/1672880243863-mu3OB1Y5X2.png?width=1200)
![](https://assets.st-note.com/img/1672880292513-HdBJCcalEb.png?width=1200)
ま、これはサイズクラスでRegularとCompactの違いがあるから当たり前ちゃあ当たり前な話なんだけど、、、💦
⒊Interface Builder Documentを確認
![](https://assets.st-note.com/img/1672880482022-Yw7hFNWxgo.png)
⒋AutLayoutの制約を追加
![](https://assets.st-note.com/img/1672880603072-6wzBr5Sl2L.png?width=1200)
![](https://assets.st-note.com/img/1672880643338-I6XLTjPmCc.png?width=1200)
⒌ ⒉を再実行して確認
![](https://assets.st-note.com/img/1672880726483-sdwAmFFYE0.png?width=1200)
![](https://assets.st-note.com/img/1672880755857-2tRby5AYy0.png?width=1200)
⒍追加した制約を確認
まず、制約確認できるエリアが表示されていない可能性があるから
表示する方法ね
左下の一番左のマークをクリック
![](https://assets.st-note.com/img/1672881056717-bXsMDVAYLJ.png?width=1200)
![](https://assets.st-note.com/img/1672881113669-xUEtnkQ6wE.png)
![](https://assets.st-note.com/img/1672881179551-KBXiuArM32.png?width=1200)
⒎Confrict=制約の衝突を解決するように追加してみる
![](https://assets.st-note.com/img/1672881363544-GXJD60ldnU.png?width=1200)
![](https://assets.st-note.com/img/1672881380782-D50hNblS0p.png?width=1200)
![](https://assets.st-note.com/img/1672881428518-REH8JtcgvO.png?width=1200)
![](https://assets.st-note.com/img/1672881464828-9N1Qnf9I7L.png)
![](https://assets.st-note.com/img/1672881502178-fvp3qxXhP0.png?width=1200)
![](https://assets.st-note.com/img/1672881547099-xka6HhwN0V.png)
![](https://assets.st-note.com/img/1672881595075-7S5fooOpNU.png?width=1200)
![](https://assets.st-note.com/img/1672881658114-vKCBpzn9lf.png?width=1200)
⒏部品を制約の位置に移動する
![](https://assets.st-note.com/img/1672881745124-bhgGLfchX3.png?width=1200)
![](https://assets.st-note.com/img/1672881800617-zZ5GRmOYxA.png)
![](https://assets.st-note.com/img/1672881882915-KsDR4DtOLr.png?width=1200)
![](https://assets.st-note.com/img/1672881919658-zlw7jH5MaR.png?width=1200)
⒐以降は少し、今の表示と違うことが多いので、
制約の一部追加方法をちょっと一例だけ
ボタンの幅と高さを両方100に変更したくなったとして
![](https://assets.st-note.com/img/1672882172581-7w7oSR17YX.png)
![](https://assets.st-note.com/img/1672882208912-tP56C5oI6a.png?width=1200)
![](https://assets.st-note.com/img/1672882294821-KsHmQCsBvz.png?width=1200)
![](https://assets.st-note.com/img/1672882335727-ww4sSp2yqb.png)
![](https://assets.st-note.com/img/1672882402764-jbxoCCtUAy.png?width=1200)
![](https://assets.st-note.com/img/1672882949468-mbpLy62qPl.png)
![](https://assets.st-note.com/img/1672882971638-ajoGy65WbY.png?width=1200)
![](https://assets.st-note.com/img/1672883004360-5sHDjJU3Qj.png?width=1200)
ただし、シミュレータで確認してみると、、、
![](https://assets.st-note.com/img/1672883062784-KljH4KDdu8.png?width=1200)
![](https://assets.st-note.com/img/1672883103730-ynFeVoo2Sy.png?width=1200)
まとめ
と、まあ今回は記事に従ってここまで。
今回は導入編なので
AutoLayoutどんなものか
をイメージしてもらえれば充分
参考書籍としては、
なんかがある。
読みたい人は自由だし、5年以上前にやってたけど、個人的には、
既にXcodeの操作画面も古くなっている
Objective-C関係の知識を俺はこんなに知ってるんだ!って感じでObjective-C関係の知識をふんだんに盛り込んでる
純粋なSwiftの知識だけでできないことばかり書いてる
印象なので、正直お勧めしないし、読んで操作しても混乱するか学習コストを嵩上げするだけ
沼を底なし沼に自分でする
だと思う。
よりは、
自分でビューを作ってみて、AutoLayoutの制約をゆっくり最新の環境でやった方が近道。
UIKitのiOSアプリ開発で
AutoLayoutも含めてだけど、画面上での操作でできることをわざわざコードで、あんまりやらない方がいい。
技術力アピールしたい自称プログラマさんとかでさっき紹介した本とかで最初からObjective-Cのコードでやろうとする人も昔は多かったけど、
ビューを変更したいときに、柔軟性がなくなる
簡単なことをあえて難しくするのは、Appleがあまり推奨してない
から、やらない方がいいかなと、、、。
「コードイズ技術力」でアピール
したくて、他に無理にUIKitでやらないといけない事情がないんだったら、
最初からSwiftUIでやれよ!!!!
てだけの話。
さてと次回は
複数部品ですな。