Interface Builder(XcodeのStoryboardエディター)で簡単にこれを実現できます。現在はすべての要素をそのまま残し、すべてを設定するまで制約の問題を心配しないでください。 (ここでは、プログラムで記述したすべてを作成することもできますが、コンテンツをスクロール可能にするためにはUIScrollViewが必要です)、UITableViewを使用する方法もありますが、それはより多くの作業で、すべてを再構築する必要があります。あなたのViewControllerはメインビューを持っています。オブジェクトライブラリのUIScrollView
をビューにドラッグします。 ScrollViewのTop Anchor
,Trailing Anchor
、Bottom Anchor
、およびLeading Anchor
に、メインビューに対する制約をそれぞれ0の定数で与えます。
要素をスクロールビューに追加する最も簡単な方法は、垂直のUIStackView
を使用することです。これを行い、制約の問題が発生しないようにするには、コンテナとしてUIView
をスクロールビューに追加する必要があります。上で述べた4つのアンカー(今度はコンテナのもの)に0の一定の制約をScrollviewに与えます。また、メインビューと同じ幅の制約を与えます。
今度はStackViewをコンテナに追加し、4つのアンカーも設定します(今回はコンテナに当てはまります)。要素をStackViewにドラッグできるようになりました。あなたはUIStackView
は必要ありません。すべての要素をコンテナに追加できますが、コンテナには高さと幅の制約が必要です。すでに幅制約を設定していますので、要素に基づいて高さ制約を自分で設定する必要があります。後者はUIStackView
によって自動的に管理されます。
これで、制約の設定を開始できます(高さの制約は必要ありません。スタックの高さは自動的に計算されます)。 ScrollViewのコンテンツの高さと幅が必要です。自動的にStackViewから高さを取得します。デバイス上で実行すると、StackViewの内容が画面に表示されなくなるとScrollViewが自動的にスクロール可能になります。 ScrollViewは、メインビューの幅に従うので、幅が設定されているコンテナからの幅です。アンカーを設定するときは、Constrain to margins
のチェックボックスが選択解除されていることに注意してください。
は私の長い説明を説明するために、ヘルプ下の写真ホープ:
のUIView(偶数またはのUIViewControllerとしてそれらを残したが、ビューがより明白である)として、あなたはあなたの現在の画面を作ることができ、かつコードからのスクロールビューの上にこのビューを追加します。この場合Autolayoutはコードからも行う必要があります。 –
ありがとうございます。どうやって教えてくれますか?私はcreateViewController:UIViewControllerがあると仮定します。 –
@ PhilEdge - あなたの画面が現在どのようにレイアウトされているかの画像キャップを表示できますか?個々のラベル、テキストフィールド、およびボタンの間に制約がありますか?またはサブビューのセット?または、スタックビューになっていますか? – DonMag