web-dev-qa-db-ja.com

uiscrollviewをiOSの垂直スクロールのみにする方法は?

これを使ってlayoutの中にscrollviewを作ろうとしています チュートリアルリンク

そして、次の結果が得られます link

アドバイスやチュートリアルリンクをいただければ幸いです。垂直スクロールのみが必要です

8
Alexey Zakevich

これを行うには他の方法があるはずですが、簡単な修正は次のとおりです。

1.)StoryboradのContentViewに幅の制約を作成します。

2.)そのwidthContraintをIBOutletし、その値をviewDidLoadのビューフレーム幅に設定します。

制約アウトレットの名前がcontentViewWidthContraintであるとします。

contentViewWidthContraint.constant = self.view.bounds.size.width;

ストーリーボードからこれを行う別の方法は、コンテンツビューの幅をストーリーボードからのビューの幅、またはスクロールビューにスーパービューと同じ幅の制約がある場合はスクロールビューに固定することです。 Contentviewからself.viewまたはScrollviewのいずれかに「EqualWidth」制約を追加します(scrollviewの場合、すでに幅制約があります)

10
Jen Jose

スクロールビューの幅と一致するように「ContentView」の幅を設定しましたか?同じ問題が発生し、「Equal Widths」で修正しました。

"Equal Widths"は、 "ContentView"に、 "Scroll View"と同じ幅を使用するように指示します。これは、画面に収まるはずです。制約を適切に設定します。

これはストーリーボードで簡単に行うことができます。

  1. 「ContentView」から「ScrollView」まで、右クリック(重要!!!)でドラッグアンドドロップします。
  2. クリックを放すと、メニューが表示されます。「Equal Widths」を選択します。

    Prompted menu

これにより、ストーリーボードエディタのAutoLayoutでスクロールビューを使用して問題を修正できます。

AutolayoutとStoryboardでScrollViewを使用する方法の完全なチュートリアルを見つけることができます ここ

これがあなたのお役に立てば幸いです:)

8
Jesuslg123

非常に良い結果をもたらす別の可能性もあります。

チェックボックスをオンにすることができます:

enter image description here

Oプログラムで:

scrollView.alwaysBounceVertical = true
3
Markus

ストーリーボードで、UIScrollViewに含まれる要素の幅をこのUIScrollViewの幅に等しく設定します(ストーリーボードの左側のパネルで保持されているすべての要素とUIScrollViewを選択し、[ピン]の下に[等しい幅]制約を設定します'ストーリーボードの下部にあります)。要素の右側をUIScrollViewの右側に固定するだけでは機能しません。これは、「表示ビュー」のサイズを最大の要素の幅に調整し、これがUIScrollViewの幅よりも小さい場合はすべての要素が調整されるためです。左側に揃えて表示されます。

3
MCS

水平スクロールを無効にするには、-(void)scrollViewDidScrollメソッドでコンテンツサイズを設定できます。

[self.scrollView setContentOffset: CGPointMake(0, self.scrollView.contentOffset.y)];
self.scrollView.directionalLockEnabled = YES;
1
Vineeth Joseph

次のように、幅を0に、高さをコンテンツサイズに等しく設定してみてください。

self.scrollView.contentSize = CGSizeMake(0, self.scrollView.contentSize.height);

これはあなたが望むように動作します。それを試して、まだ問題が発生しているかどうかを確認してください。

0
iYoung

以下のコードのようにUIScrollView制約を設定しすぎると、画面全体が占有されます。画面サイズを超えないようにしてください。

Leading Space = 0 from mainView
Top Space = 0 from mainView
Bottom Space = 0 from mainView 
Trailing Space = 0 from mainView
0

これは、スクロールビューでは、コンテンツをどこで終了するかがわからないためです。

ただし、スクロールビュー内の少なくとも1つのアイテムに、スクロールビュー外のビュー(通常、スクロールビューが置かれているビュー、またはその幅を「認識」しているより高いレベルの他のビュー)に「トレーリングスペース」制約がアタッチされている場合)-スクロールビューは、必要な幅について自動的に認識し、水平方向にスクロールしません(末尾の制約がコンテンツを画面の外に置くことを意味する場合を除く)。

スクロールビュー内のすべてのアイテムに、「トレーリングスペース」制約が相互に接続されているか、スクロールビュー外のビューに接続されているとよいでしょう。しかし、スクロールビュー自体ではありません。

これが機能するために追加のコードや追加の制約は必要ありません。

0
Vitalii

UIScrollViewの幅を親ビューの幅以下に設定する必要があります。それを行う2つの方法:

1)レイアウト制約を介してストーリーボードでこれを行うことができます

2)これはプログラムで行うことができます。

self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.contentSize.height);
0
M Abdul Sami