2

UIScrollViewには、コンテンツの高さと幅がスクロールビューのサイズより大きくなっています。基本的には水平方向と垂直方向にスクロールできます。私が望むのは、垂直方向にのみスクロールすることです。以下のコードを使用して、UIButtonを使用して水平スクロールを管理します。UIScrollViewの水平スクロールを無効にする最適な方法は何ですか?

水平scrollviewを防止
[scrlViewQuestion setContentOffset:CGPointMake(questionWidth, 0) animated:YES]; 

、1だけでscrollviewサイズよりも小さいscrollviewのコンテンツの幅を設定することができますが、私の場合にはscrollviewのコンテンツの幅がそのサイズよりも大きいですか?では、これを解決する最善の方法は何ですか?

答えて

0

スクロールビューのcontentSizeは、画面の幅とスクロール可能なコンテンツの実際の高さに設定します。 topbottom、およびrightの場合はcontentInsetをゼロに設定します。 leftのコンテンツのインセットでは、常に表示する位置のネゲートx座標を選択します。

など。あなたのスクリーンは320ポイント広く、あなたがxに固定された水平スクロールしてコンテンツを表示したいのですが、垂直方向のスクロールが許可されている場合:

CGFloat screenWidth = 320.0; 
CGSize actualContentSize = CGSizeMake(3000, 3000); 

[scrlViewQuestion setContentSize:CGSizeMake(screenWidth, actualContentSize.height)]; 
[scrlViewQuestion setContentInset:UIEdgeInsetsMake(0, -x, 0, 0)]; 
+1

もっと正確に言うと、 'contentSize.width'をスクロールビューの幅(例えば' scrollView.bounds.size.width')に設定します。しかし、レイアウト制約を使用している場合、autolayoutはスクロールビューの 'contentSize'を実行時にリセットします(これはおそらくあなたが気づいたよりも頻繁に起こります)。その場合は、制約を変更する必要があります。 –

+0

@robはい、警告を指摘してくれてありがとう – mschmidt

1

あなたはストーリーボードでこれを行うことができます。

enter image description here

Scroll ViewのアイデンティティInspector.ItからShow Horizontal Indicator]タブでは、あなたの水平スクロールを無効にします無効にします。