ストーリーボード内の Autolayout を使用した UIScrollView は正常に機能します
私は、理解できない問題を解決するために、「コンテナ ビュー」アプローチ、別名ブルート フォースを推奨する人を数多く見てきました。コンテンツがスクロールビューに直接接続されているサブビューではなく、スクロールビュー全体であると見なすことにより、スクロールビューの大きな利点を失ったため、最適ではありません。
これが、次の例で行った方法です
--UIScrollView
|-> UITextView
|-> UILabel
|-> UIOtherStuff
をストーリーボードの に配置するときUIScrollView
はUIView
、エッジを の 4 つの側面に固定するだけUIScrollView
ですUIView
。にコンテンツを追加してUIScrollView
、各ディメンションに少なくとも 2 つの制約を指定するようにします。Autolayout の優れた点は、スクロールビューの contentSize または UILabels のサイズを、その中のコンテンツのサイズに基づいて決定する必要があることです。AKA 固有コンテンツサイズ。したがって、「scrollView のあいまいなコンテンツ サイズ」という警告が表示された場合は、コンテンツに十分な制約を与えていないことがわかります。たとえば、ビュー間に上、下、左、右の間隔距離を指定した可能性がありますが、このような無限の垂直面であるため、制約しているサブビューにも高さが必要ですUIScrollView
あなたの見解がゼロから無限に高いと仮定することができます.
別の言い方をすれば、Autolayout by Example に関する Apple ガイドでは、成功のための簡単な 3 つのポイント計画を立てています。
- スクロール ビューを作成します。
- その中に UI 要素を配置します。
- スクロール ビュー コンテンツの幅と高さを完全に定義する制約を作成します。
'Min melding til' を持つその上部の TextView も、さらに多くの行を入力すると成長し、ScrollView 全体がそれを含むように成長します。クラスをオーバーライドしUITextView
て変更された高さの制約を返しますが、ScrollView 自体はコーディングしなくても正しく動作します。
最後に、Autolayout に関連する多くの投稿で、すべてを修正するという魔法の呪文を試していますtranslatesAutoresizingMaskIntoConstraints = NO
。これは、ビューがプログラムで作成された場合にのみ必要です。
