仲間の開発者、Interface Builder (Xcode 5 / iOS 7) で AutoLayout に問題があります。これは非常に基本的で重要なので、これがどのように適切に機能するかを誰もが知っておくべきだと思います。これが Xcode のバグである場合、重大なバグです。
したがって、このようなビュー階層があるときはいつでも問題が発生します。
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
UIScrollView には、たとえば、各辺から 50 ピクセル (問題ありません) などの厳密な制約があります。次に、UILabelにトップスペース制約を追加します(問題ありません)(ラベルの高さ/幅を固定することもできますが、何も変更しませんが、ラベルの固有のサイズのために不要になるはずです)
UILabel に末尾の制約を追加すると、問題が発生します。
例: 末尾のスペース: Superview Equals: 25
2 つの警告が表示されますが、その理由がわかりません。
A)スクロール可能なコンテンツのサイズのあいまいさ (スクロール ビューには、スクロール可能なコンテンツの高さ/幅があいまいです)
B)見当違いのビュー (予想されるラベル: x= -67 実際: x= 207
この最小限の例を、ダウンロードできる新しいプロジェクトで作成し、スクリーンショットを添付しました。ご覧のとおり、Interface Builder は、Label が UIScrollView の境界 (オレンジ色の破線の四角形) の外側にあることを想定しています。問題解決ツールを使用してラベルのフレームを更新すると、その場所に移動します。
注: UIScrollView を UIView に置き換えると、動作は期待どおりになります (ラベルのフレームは正しく、制約に従っています)。したがって、UIScrollView に問題があるか、何か重要なことを見逃しているようです。
IB で提案されているように、ラベルのフレームを更新せずにアプリを実行すると、それが本来あるべき場所に正確に配置され、UIScrollView がスクロール可能になります。フレームを更新すると、ラベルが見えなくなり、UIScrollView がスクロールしません。
助けてオビワン・ケノービ!なぜあいまいなレイアウトですか?見当違いの理由は?
ここからサンプル プロジェクトをダウンロードして、何が起こっているかを確認してみてください: https://github.com/Wirsing84/AutoLayoutProblem