2017-10-24 3 views
0

私はクリケットシミュレーターに取り組んでいて、ユーザーがチームとプレーヤーの情報を入力するためのテキストボックスがたくさんあるスクリーンを持っています。ポップアップキーボードは画面の下部を隠すので、スクロールするには画面が必要であることがわかりました。以前に作成したViewControllerにScrollViewを追加しますか?

この複雑な画面をスクロール可能にする方法はありますか?私はScrollViewを作成し、それをStoryboardで上に作成することで、最初から何をするのか知っていますが、以前に作成した後にスクロール可能にする方法はありますか?

ありがとうございました。

+0

のUIView(偶数またはのUIViewControllerとしてそれらを残したが、ビューがより明白である)として、あなたはあなたの現在の画面を作ることができ、かつコードからのスクロールビューの上にこのビューを追加します。この場合Autolayoutはコードからも行う必要があります。 –

+0

ありがとうございます。どうやって教えてくれますか?私はcreateViewController:UIViewControllerがあると仮定します。 –

+0

@ PhilEdge - あなたの画面が現在どのようにレイアウトされているかの画像キャップを表示できますか?個々のラベル、テキストフィールド、およびボタンの間に制約がありますか?またはサブビューのセット?または、スタックビューになっていますか? – DonMag

答えて

0

Interface Builder(XcodeのStoryboardエディター)で簡単にこれを実現できます。現在はすべての要素をそのまま残し、すべてを設定するまで制約の問題を心配しないでください。 (ここでは、プログラムで記述したすべてを作成することもできますが、コンテンツをスクロール可能にするためにはUIScrollViewが必要です)、UITableViewを使用する方法もありますが、それはより多くの作業で、すべてを再構築する必要があります。あなたのViewControllerはメインビューを持っています。オブジェクトライブラリのUIScrollViewをビューにドラッグします。 ScrollViewのTop Anchor,Trailing AnchorBottom Anchor、およびLeading Anchorに、メインビューに対する制約をそれぞれ0の定数で与えます。

要素をスクロールビューに追加する最も簡単な方法は、垂直のUIStackViewを使用することです。これを行い、制約の問題が発生しないようにするには、コンテナとしてUIViewをスクロールビューに追加する必要があります。上で述べた4つのアンカー(今度はコンテナのもの)に0の一定の制約をScrollviewに与えます。また、メインビューと同じ幅の制約を与えます。

今度はStackViewをコンテナに追加し、4つのアンカーも設定します(今回はコンテナに当てはまります)。要素をStackViewにドラッグできるようになりました。あなたはUIStackViewは必要ありません。すべての要素をコンテナに追加できますが、コンテナには高さと幅の制​​約が必要です。すでに幅制約を設定していますので、要素に基づいて高さ制約を自分で設定する必要があります。後者はUIStackViewによって自動的に管理されます。

これで、制約の設定を開始できます(高さの制約は必要ありません。スタックの高さは自動的に計算されます)。 ScrollViewのコンテンツの高さと幅が必要です。自動的にStackViewから高さを取得します。デバイス上で実行すると、StackViewの内容が画面に表示されなくなるとScrollViewが自動的にスクロール可能になります。 ScrollViewは、メインビューの幅に従うので、幅が設定されているコンテナからの幅です。アンカーを設定するときは、Constrain to marginsのチェックボックスが選択解除されていることに注意してください。

は私の長い説明を説明するために、ヘルプ下の写真ホープ:

The Structure of the VC Make sure this is off (red circle)

関連する問題