UIScrollView
は、UITextView
とUIImageView
のオブジェクトがすでに追加されたインタフェースビルダーで作成されています。私はIBOutlet
に接続しました。-(void)viewDidLoad
の下には、コンテンツサイズを1200x2000
に設定しました。ユーザーの操作Enabled、Multitouch、Scrolling Enabled、および垂直スクロールインジケータと水平スクロールインジケータはすべてYES
に設定されています。 iOSシミュレータでアプリを起動すると、スクロールしません。おそらくこの行動の原因になる可能性がありますか?UIScrollViewはスクロールしませんか?
答えて
viewDidLoadはすぐになります。ビューのレイアウトが完了するまで待つ必要があります。 viewDidAppearでcontentSizeを設定してみてください。
autolayoutを使用していますか?もしそうなら、以下の答えをチェックしてください。そして、1を忘れてください: UIScrollView doesn't use autolayout constraints。
私は最初のものを試しましたが、それは助けになりませんでした。私は他の答えをチェックアウトし、それを実装するためのこのすばらしいコードを書いています: ' - (void)viewDidLoad { //ビューを読み込んだ後に追加設定を行います。 _mainScrollView.contentSize = CGSizeMake(4000、4000); for(int i = 0; i <_mainScrollView.subviews.count; i ++){ UIView * newSubview = [_ mainScrollView.subviews objectAtIndex:i]; newSubview.translatesAutoresizingMaskIntoConstraints = NO; } [super viewDidLoad]; } – 68cherries
@Nenad M:なぜ1号機を忘れるのですか?純粋な自動レイアウトのアプローチでは、まだ 'contentSize'を設定する必要があります。おそらく、もしあなたがそれを必要としない混合アプローチを取っても、私はそれをまだ試みていません。 – testing
@ティムキン:秘密は何ですか? 1つの秘密は[この回答]であるようです(http://stackoverflow.com/a/16029013/426227)。 – testing
私はコードを書くに頼ることなく、この問題を克服する方法を知っている最良の方法は、それがすべてのストーリーボードの中に行われ、ここではどのようにすることができるということである:休暇が有効に自動レイアウト
- 。
- 一般的なUIViewをUIScrollViewのサブビューにします。 2.1)すべてのビューコンポーネントをこの一般的なUIViewに入れます。
- サブビューとUIScrollViewの間で自動レイアウト制約を作成します。最後のサブビューの右および/または下をUIScrollViewの右および/または下に固定する必要があります。 UIScrollViewがコンテンツサイズを認識する方法です。
ありがとう!これは、私がiOS 7のUIScrollViewで作業するために見つけた唯一の方法です。Autolayoutを使って風景を撮ってみましょう!!!!!!! :) いいぞ! –
実際には遅いですが、viewDidAppear:animated
でも十分遅くない可能性があります。 contentOffset
を設定する理想的な場所は、viewDidLayoutSubviews
です。あなたが自動レイアウトを使用している場合
、あなたはプル機能をリフレッシュするために、私はUIScrollViewの上のカスタムビューを使用し
viewDidLayoutSubviews
内のコンテンツのサイズを設定するコードを置くことを確認し、スクロールビューではありませんスクロール可能。私は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)
}
リファレンスドキュメント:
初期化コードをポスト? –
初期化コードはありません。私はUIScrollViewがIBによって自動的に初期化されると信じています。私がコードしたのは、scrollView – 68cherries
のcontentSizeプロパティを設定して、UIScrollViewが実際にタッチイベントを取得しているかどうか、または実際にすべてのイベントを食べているかどうかをチェックするUIScrollViewデリゲートメソッドを確認して確認することでした。g scrollViewWillBeginDragging: – Dinesh