0

私はモーダルで表示されるビューコントローラーを持っており、そのVCにはスクロールビューがあります。しかし、スクロールビューを追加することは、通常、私のsegueが 'present modal'のタイプでは機能していないようです。私はどこかで、スクロールビューを別のビューに置いて動作させる必要があると読んでいます。だから、これは私のビュー階層である:'現在のモーダル'ビューコントローラーのScrollviewが機能しない

これらは、ビューAのための私の制約です:

ScrollView制約:

ViewB制約:

そして、ViewBでは、私は上の左に&の右の制約を与えた別のビューを、そのスーパービューに0として持っています。私もコードでこれを設定しています:

override func viewDidLayoutSubviews() 
{ 
    viewB.frame.size.height = 2000 
    scrollView.contentSize = viewB.frame.size 
} 

ただし、スクロールビューはまだスクロールしません。助けてくれる人のおかげで、しばらくの間これに執着しました。

答えて

1

問題は、そのビューを含むビューにViewB制約を設定していることです。あなたがそのアプローチをとるなら(これは私が好む)、これは問題ありません。スクロールビューのcontentSizeは、contentSizeプロパティではなく、ViewBのサイズによって決まることを意味します。したがって、あなたのviewDidLayoutSubviewsコードは役に立たず、あなたの最初の動きはそれを捨てるべきです。

ここで、です。残念ながら、スクロールビューのサイズと同じですが、ViewBの幅と高さの制約によってスクロールビューと同じサイズになっているため、スクロールビューのサイズと同じです。したがって、スクロールするものはありません。

解決策は、コード内で何をしようとしていたか、つまり、高さ制約の代わりに2000で固定された高さ制約をViewBに与えることです。

+0

ちなみに、スクリーンショットに赤い矢印が表示されているということは、制約が悪いことを意味します。あなたは何かをする前にそれを修正する必要があります。実行時に意味のあるインタフェースを取得できない可能性があるため、悪い制約を処理することは無意味です。また、あなたのスクリーンショットを見て、あなたの制約を過大評価することが非常に悪い習慣を持っていることを今すぐに伝えることができます。それは深刻な問題を引き起こします。 – matt

+0

最初にMattさんの助けを感謝します。そして、あなたは正しいです、私は自分の制約を過大評価する習慣があります。私はいつもスクロールビューのためにエラーが発生します。私のscrollviewは固定されていない高さを持っているので、通常は、scrollViewを上、左、右、下に固定します。しかし、xCodeはスクロールビューでビューの幅と高さを指定する必要があるというエラーをスローします。高さは固定されていないので、コードで設定します。コードで完全に/完全にストーリーボードで行うのが良い方法ですか? – Moo33

+0

私が答えて言ったように、私はあなたがしようとしているように、ストーリーボードの制約によってそれをやりたい。 – matt

関連する問題