4

私の UIScrollView は、コンテンツを表示するためにユーザーが水平方向にスクロールする必要がある ~4500px の水平ビューです。

次のように設定しました。

- (void)viewDidLoad
{

    [super viewDidLoad];

    sview.frame = CGRectMake(0, 0, 568, 320);
    sview.contentSize = CGSizeMake(4500, 320);
    [sview setScrollEnabled:YES];
}      

しかし、スクロール ビューは何もしません。私が見逃した明らかなものはありますか?私は文字通りウェブ上のすべてのチュートリアルを試しました。

4

5 に答える 5

5

同様の問題が発生しました。次の変更を行い、scrollView がスクロールを開始しました。

  1. xib の UIScrollView の 'Bounce Horizo​​ntally' プロパティをチェックするために選択します。
  2. 次のコードを viewDidLoad ではなく viewDidAppear に移動します。
-(void) viewDidAppear:(BOOL)animated
{

    [super viewDidAppear:animated];
    sview.frame = CGRectMake(0, 0, 568, 320);
    sview.contentSize = CGSizeMake(4500, 320);
    [sview setScrollEnabled:YES];

}

これはあなたを助けるはずだと思います。

于 2014-03-13T09:19:27.467 に答える
4

ここで説明しましたが、この問題に対する回答は非常に多く、自動レイアウトをオフにすることをお勧めします。これで問題は解決しますが、それは実際には正しい解決策ではありません。これが私の答えです:


自動レイアウトを有効にすると機能しますが、それは解決策ではありません。自動レイアウトが本当に必要な場合は使用し、必要ない場合はオフにします。しかし、それはこのソリューションの正しい修正ではありません。

UIScrollView自動レイアウトの他のビューでは動作が異なります。これは自動レイアウトに関するAppleのリリースノートです。興味深い部分をコピーしました:

UIScrollView の自動レイアウト サポートに関する注意事項を次に示します。

  • 通常、自動レイアウトでは、ビューの上、左、下、および右の端が可視の端であると見なされます。つまり、スーパービューの左端にビューを固定すると、実際にはスーパービューの境界の最小 x 値に固定されます。スーパービューの境界原点を変更しても、ビューの位置は変更されません。
  • UIScrollView クラスは、境界の起点を変更することによってコンテンツをスクロールします。これを自動レイアウトで機能させるために、スクロール ビュー内の上、左、下、および右の端がコンテンツ ビューの端を意味するようになりました。
  • スクロール ビューのサブビューに対する制約は、満たすサイズになる必要があり、スクロール ビューのコンテンツ サイズとして解釈されます。(これは、Auto Layout に使用される組み込みの ContentSize メソッドと混同しないでください。) Auto Layout でスクロール ビューのフレームのサイズを変更するには、スクロール ビューの幅と高さに関する制約を明示的に指定するか、スクロール ビューの端を指定する必要があります。サブツリーの外側のビューに関連付けられています。
  • スクロール ビューのスーパービューなど、スクロール ビューのサブツリーの外側にあるビューとビューの間に制約を作成することで、スクロール ビューのサブビューを他のスクロール コンテンツの上に浮かんでいる (スクロールしない) ように見せることができることに注意してください。

UIScrollView次に、Apple はAuto Layoutを正しく使用する方法の例を示します。

原則として、最も簡単な修正方法の 1 つは、要素と UIScrollView の下部との間に制約を作成することです。したがって、UIScrollView の下部に配置する要素で、この下部スペースの制約を作成します。

ここに画像の説明を入力

繰り返しますが、自動レイアウトを使用したくない場合は、オフにしてください。contentSizeその後、通常の方法で設定できます。ただし、これは Auto Layout の意図した動作であることを理解しておく必要があります。

于 2014-01-22T04:20:15.667 に答える
1

まず、UIScrollViewのコンテンツなしで、スクロール用のサブビューとしてUIScrollSiewにコンテンツを追加する必要があります。どのようにスクロールできますか?これが私がしたことです。UIScrollViewのサイズと同じサイズのサブビューとしてUIImageViewをUIScrollViewに追加するだけです...

viewDidLoadメソッドで、次のコードを試してください。

-(void)viewDidLoad
{
     UIScrollView *scroll=[[UIScrollView alloc] init];
     scroll.frame=CGRectMake(0, 0, 320, 460);
     UIImageView *imageView=[[UIImageView alloc] init];
     imageView.frame=CGRectMake(0, 0, 320,460);
     imageView.image=[UIImage imageNamed:@"chiranjeevi.jpeg"];
     scroll.contentSize = CGSizeMake(4500, 460);
     [scroll setScrollEnabled:YES];
     [scroll addSubview:imageView];
     [self.view addSubview:scroll];

}

私はこのコードをテストしましたが、うまく機能します。このコードがお役に立てば幸いです。

于 2012-10-17T05:02:12.890 に答える
0

XibファイルにUISrollingViewを追加していると思います。これはあなたのために働くでしょう。

sview.delegate = self;
sview.backgroundColor=[UIColor clearColor];
[sview setCanCancelContentTouches:NO];
sview.indicatorStyle = UIScrollViewIndicatorStyleWhite;
sview.clipsToBounds = YES;
sview.scrollEnabled = YES;
sview.contentSize = CGSizeMake(320,570);
CGPoint topOffset = CGPointMake(0,0);
[sview setContentOffset:topOffset animated:YES];

また、XibファイルでIBOutlet接続を指定してください。

于 2012-10-17T05:18:42.903 に答える
-1

私も同じ問題に直面しました.xibにスクロールビューを追加しました.このスクロールビューにいくつかのサブビューも追加しました. サブビューを追加すると、スクロール ビューのスクロールが停止します。この問題の解決策は、ファイル インスペクターのビューの xib で [自動レイアウトを使用] がオンになっていることでした。チェックを外すと、サブビューを追加した後にスクロールビューがスクロールしました。

解決策は、xib のファイル インスペクターで [自動レイアウトを使用] のチェックを外すことでした。

于 2013-12-13T06:41:41.220 に答える