InterfaceBuilderでUIScrollView
を作成し、UITextView
オブジェクトとUIImageView
オブジェクトをすでに追加しています。 IBOutlet
に接続し、-(void)viewDidLoad
の下でコンテンツサイズを1200x2000
に設定しました。ユーザーインタラクションが有効、マルチタッチ、スクロールが有効で、垂直および水平のスクロールインジケーターがすべてYES
に設定されていることを示します。 iOSシミュレーターでアプリを起動すると、スクロールしません。この動作の原因は何でしょうか?
viewDidLoadはもうすぐです。ビューのレイアウトが行われるまで待つ必要があります。 viewDidAppearでcontentSizeを設定してみてください。
自動レイアウトを使用していますか?もしそうなら、次の答えをチェックしてください(そして1を忘れてください): IScrollViewは自動レイアウト制約を使用しません 。
コードを書かずにこの問題を克服する方法を私が知っている最善の方法は、すべてをストーリーボード内で実行できることです。その方法は次のとおりです。
viewDidLoad
は確かに早すぎますが、viewDidAppear:animated
も十分に遅れていない可能性があります。 contentOffset
を設定する理想的な場所はviewDidLayoutSubviews
の内部です。
自動レイアウトを使用している場合は、コンテンツサイズを設定するコードを必ず配置してください
viewDidLayoutSubviews
プルして更新する機能のためにUIScrollViewのカスタムビューを使用していますが、スクロールビューはスクロールできません。 contentSize
をAutoLayout
で設定してみて、コードでも設定してみます。スクロールビューはまだスクロールできません。
3〜4時間過ごした後、contentInset
で解きます。スクロールビューに、スクロール用のスペースを追加するように指示します。
override func viewDidLayoutSubviews() {
// Add extra 15pt on the `top` of scrollView.
//self.scrollView.contentInset = UIEdgeInsetsMake(15, 0, 0, 0)
// Add extra 2pt on the `bottom` of scrollView, let it be scrollable. And the UI is more beautiful in my case.
self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 2, 0)
}
リファレンスドキュメント:
これは、スクロールビューをしばらく使用しなかった後に誰かが忘れた場合に備えて、スクロールビューの優れたウォークスルーです。 https://medium.com/@pradeep_chauhan/how-to-configure-a-uiscrollview-with- auto-layout-in-interface-builder-218dcb4022d7 。
基本的に、次のように、ビュー->スクロールビュー->ビューがあることを確認してください。
それでは、
1。スクロールビューの制約(上、下、先頭、末尾)を(0,0,0,0)に設定します。
2。内部ビューの制約(上、下、先頭、末尾)を(0,0,0,0)に設定します。
3。親ビューと同じ幅と同じ高さになるように内部ビューを設定します。
4。内部ビューの高さ制約を選択し、優先度を低(250)に設定します。