Autolayoutは最初は非常に混乱することがあります。実際には、スクロールビューのcontentSizeをどこにも設定したくないのです。純粋な自動レイアウトアプローチでは、スクロールビューは独自のコンテンツサイズを設定します。 iOS 6 release notesに自動レイアウトとUIScrollView
のセクションを参照してください:スクロールビューのサブビューに
制約は、その後 スクロールビューのコンテンツサイズと解釈され埋める サイズをもたらす必要があります。 (これは、自動レイアウトのために使用さ intrinsicContentSize方法と混同すべきではない。)
注これはscrollviewのサブビューに制約がに基づいて変化する幅を使用する明示的な幅と高さを設定してはならないことを意味しますスクロールビューの側面
ここで2番目のエラーは、UIImageView
のフレームを画像のサイズに設定したことです。 autolayoutではこれも不要です。 UIImageView
には、実際には下にある画像のサイズであるintrinsicContentSize
があります。以下である必要があり、自動レイアウトでscrollviewに画像を配置することを意味する(これを変更するには、優先度の高い、幅と高さの制約を設定する必要があります)と持って、それが正しいコードをスクロール:
** nothing at all!!! **
しかし、あなたがそれに注意する必要があるものは、スクロールしないように見える画像を持つ原因になる可能性があります。
スクロールビューのサブビューを表示させることができます他のスクロールコンテンツに対して (スクロールしない)を浮動させるには、ビューとスクロールビューのサブビューの外側のビュー( など)。
インターフェイスビルダで制約を設定し、階層内のスクロールビューの上にあるビューに画像ビューを制限すると、ビューがスクロールする方法に影響します。マッド!
ハッピーコーディング...
この作品は、ありがとうございます!本当に奇妙なAppleはiOS 6のドキュメントでこれに関する情報を入れていない。おそらく問題は、制約が-viewDidLoadが呼び出された後に設定されているからです(ストーリーボードから来ているので、awakeFeomNibに設定する必要があります、私が知る限り、viewDidLoadよりも前にfasとして設定してください)。 – Vitaly
scrollView内のimageViewのズームには別の問題があります。 – Vitaly
私の神はとても迷惑だった。あまりにも多くの時間が無駄になりました! viewDidLoadからviewDidAppearに移動するとすぐに正常に機能しました。ありがとうジョン! – Andy