web-dev-qa-db-ja.com

StoryboardのUIScrollViewがiOS 8サイズクラスおよび自動レイアウトで機能しない

だから、VCの高さ以上のスクロールラベルを追加できるストーリーボードでのみUIScrollViewを作成しようとしています。私がやったことは次のとおりです。

  1. 任意の幅、任意の高さVCのサイズを占めるUIScrollViewを作成しました

  2. 上、下、左、右の最近傍への間隔の制約を0にしました

  3. 任意の幅any heightと同じ幅を持つsubViewUIScrollViewであるビューを作成しましたany height VC but height 1500垂直にスクロールします)。

  4. 左、上、および右のみに制約を最近傍に0として設定し、高さ制約を1500に設定します。

  5. subViewの上部と下部にラベルを配置します

IPhone 6でアプリを実行すると、思い通りに垂直にスクロールしません。これが機能しない理由はありますか?前もって感謝します。

22
Lucas

スクロールを取得するには、サブビュー(「コンテンツビュー」)をスクロールビューの上下左右に固定する必要があります。さらに、(「コンテンツビュー」に)明示的な(=スクロールビューに関連しない)高さと幅を与える必要があります。これらはスクロールビューでコンテンツサイズを計算するために使用されるためです。あなたの場合、幅をVCメインビューの幅に等しく、高さを1500に設定します。幅または高さがスクロールビューのサイズよりも大きい場合、スクロールします。

スクロールビューの制約(メインビューに固定)

scroll view constraints

コンテンツビュー(scrollview + height 1500、width = mainview widthに固定)+ラベルの制約(例:コンテンツビューの左上から20 20)

content view + label constraints

45
valfer

視覚化を簡単にするために、その方法に関するビデオを作成しました。

iOSで垂直のみのスクロールビューを作成する方法に関するビデオ

8
Marco Almeida

Contentsizeを画面自体よりも大きく設定しましたか?あなたの場合、高さがちょうど大きいです。

As Apple Documentationによれば、「contentSizeプロパティをスクロール可能なコンテンツのサイズに設定する必要があります。これにより、スクロール可能な領域のサイズが指定されます。」

1
pablogthuillier

唯一の解決策は、スクロールビューの子ビューの下部サブビューの右と下に制約を追加することです。また、上から下までのすべてのビューに高さとともに適切な制約があるかどうかを確認します。スクロールビューのラッパービューでは、スーパービューに等しい幅と等しい高さの制約を追加します。

0
komall