私はスクロールビューの中に1行と10行のように少ないラベルがあります。スクロールビューのコンテンツサイズをダイナミックにして、それに応じてストレッチする方法を考え出すのが難しいです。動的高さのサブビューでscrollviewを使用するにはどうすればよいですか?
> = 100(任意の数値)の高さ制約を追加しようとしましたが、Inequality Constraint Ambiguity
という不満がありました。
私はスクロールビューの中に1行と10行のように少ないラベルがあります。スクロールビューのコンテンツサイズをダイナミックにして、それに応じてストレッチする方法を考え出すのが難しいです。動的高さのサブビューでscrollviewを使用するにはどうすればよいですか?
> = 100(任意の数値)の高さ制約を追加しようとしましたが、Inequality Constraint Ambiguity
という不満がありました。
クイック答え
Lines
のプロパティが0
に、Line Breaks
がWord Wrap
に設定されていることを確認します。contentView
説明
そのコンテンツのサイズを推測するために、スクロールビューのためには、マージンからサブビューへのマージンに制約を持っている必要があります - コンテンツは、その内部の空気が上プッシュしている風船のようにそれを想像しますバルーンサイズにするための壁です。サブビューからマージンまでの制約により、サブビューのサイズはコンテンツビューの壁を押し出すことができます。
Lines
のラベルを設定する場合、0
には、必要なだけさまざまな行があることを意味します。 Line Breaks
プロパティがWord Wrap
に設定されている場合、単語が切り捨てられない(切り捨てられない)か、文字に分解され、代わりに単語全体として次の行にプッシュされます。
あなたはそれが全体のテキストが収まる高さになりますUILabel
のための高さ制約を指定しない場合。行数が0に設定され、ラベルにすべてのマージン制約が設定されていることを確認してください。
アップルからのこのテクニカルノートでは、自動レイアウトのみを使用してスクロール可能なコンテンツでスクロールビューを正しく設定する方法について説明していますhttps://developer.apple.com/library/ios/technotes/tn2154/_index.html。
概念的には、あなたのケースでは、これはあなたが何をする必要があるかです:
ビュー階層:
MainView -> ScrollView -> ContentView -> UILabel
ここで重要なのは、UILabelの高さはそれほど伸びてcontentViewの大きさだけでUILabelの大きさに依存することを実現することですcontentViewを行います。これにより、scrollViewは自動的にcontentSizeを推測し、必要に応じてスクロールを有効にします。