2016-12-12 6 views
0

私はUIViewControllerに4つのUIViewsを持っています。色は黄色、緑色、灰色、青色です。
イエロービュー::トップ-8-スーパー、大手-8-スーパービュー、トレーリング8-スーパー、高さ= 120
グリーンビュー:トップ-8-
は、私はまた、次の自動レイアウト制約を与えました黄色の表示、先行する8枚のスーパービュー、幅= 200、高さ= 100
グレー表示:トップ8グリーンビュー、リーディング8スーパービュー、後続8スーパービュー、ボトム8ブルービュー。
BlueView:コンパイル後の底部-60スーパー、後続-8-スーパー、幅= 260、heigth = 30
と実行、それは次のようになります、この時点でUIScrollViewは正しいコンテンツサイズを持つことができません

enter image description here

問題ない、制約の苦情なし、すべてが問題ありません。

ただし、私は親ビューをUIScrollViewに変更し、UI表示が間違っています:緑色の表示のみが正しく表示され、黄色の表示と灰色の表示が欠落し、青色の表示が小さな部分を示します。

self.scrollView.contentSize = self.view.bonds.size; 
[self.scrollView setNeedsDisplay]; 
[self.scrollView layoutIfNeeded]; 

contentSizeは、(414、736)は次のようになります。私はscrollViewのcontentSize.widthが間違っていた、16であるので、私はviewDidLayoutSubviewsでそれを修正しようとしたことを確認コンソールで enter image description here

正解ですが、表示はまだ2番目の添付画像と同じです。 、(8、264:
YellowView:フレーム(8、28、0120)
グリーンビュー:フレーム(8、156、200120)
GreyView:フレームIは、ビューの詳細を記載されています0、274)
BlueView:フレーム:( - 私は観察どう252、646、260,30)

私は幅定数を与えた場合、ビューは、少なくとも0よりも大きな幅を有している、であり、そして黄色とグレーの表示では、幅の制約がないブランク表示なので、表示するのに問題があります。

幅の制約以外にも、それを修正する最適な解決策は何ですか?私はまた、なぜ、トップ、リーディング、トレーリング、高さの制約を与えたので、黄色とグレーの幅がゼロであるのか疑問に思っていますか?

答えて

1

contentViewをサブビューとしてscrollViewと追加し、すべてのサブビューをサブビューとしてcontentViewと追加します。 contentViewの制約は、width = superview.width,height >= superview.height、ピン4の側はcontentView~scrollView(先行、上端、後端、下端)と設定されています。詳細情報:https://www.natashatherobot.com/ios-autolayout-scrollview/

+0

今すぐ動作します。 Timurありがとうございます。基本的にmainview-scrollview-contentViewを制約付きで設定する必要があります。 – qkzhu

関連する問題