0

UIScrollViewサイズは(320,160)です。UIImageViewサイズ (213,160) のものをいくつか追加しています。54 (x) から始まる最初のUImageViewものなど、それぞれの間に 5.0 のスペースを追加しましたUIImageViewpagingEnablein IB& inも有効にしましたcoding。私の問題は、そのプロパティに従って適切に機能していないことです! スクロールすると、代わりUIImageViewsに各シングルに表示されるはずです。スクリーンショットを参照してください。出力スクリーンショットを参照してくださいpage

どこが間違っていますか?<画像を表示する(前)&>(次)の機能もあります。昨日、1 つの質問をしましたが、それは受け入れられましたが、私の要件はほとんど変更されておらず、解決策にはなりません。私の質問を参照してください。

設定しなければならない特別なプロパティや、実装すべきロジックはありますか? 私がチェックして試したすべての例ですが、私の要件は特別なものであることがわかりました。指さして!ありがとう。

編集:

- (void) setImages
{
CGFloat contentOffset = 0.0f;

    for (int i=0; i<[arrImgUrls count]; i++) 
    {
        CGRect imageViewFrame = CGRectMake(contentOffset, 0.0f, 213, scrollImages.frame.size.height);
        AsyncImageView *asyncImageView = [[AsyncImageView alloc] initWithFrame:imageViewFrame];
        [asyncImageView.layer setMasksToBounds:YES];
        NSString *urlImage = [arrImgUrls objectAtIndex:i];
        NSURL *url = [NSURL URLWithString:urlImage];
        [asyncImageView loadImageFromURL:url];
        [scrollImages addSubview:asyncImageView];
    contentOffset += asyncImageView.frame.size.width+increment;
        [asyncImageView release];
}

    scrollImages.contentSize = CGSizeMake([arrImgUrls count] * scrollImages.frame.size.width, scrollImages.frame.size.height);
    scrollImages.pagingEnabled = YES;
    scrollImages.clipsToBounds = NO;
}

-(IBAction)prevImage:(id)sender
{    
     _currentImage--;

     [btnNext setEnabled:YES];

     if (_currentImage==0)
     {
         [btnPrev setEnabled:NO];
         [scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth), 0) animated:YES];
         return;
     }

     NSLog(@"previous:mult %d inc %d current %d",_currentImage*imageWidth,increment*_currentImage,_currentImage);

     int nextImage=_currentImage+2;

     [scrollImages setContentOffset:CGPointMake((((_currentImage*imageWidth)-(increment*_currentImage)))+(nextImage*increment), 0) animated:YES];
 }

-(IBAction)nextImage:(id)sender
{    
   _currentImage++;

   NSLog(@"next:mult %d inc %d current %d",_currentImage*imageWidth,increment*_currentImage,_currentImage);

  [scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth)+(increment*_currentImage), 0) animated:YES];

  [btnPrev setEnabled:YES];

  if (_imageCount-1 == _currentImage)
 {
    [btnNext setEnabled:NO];
 }
}
4

2 に答える 2

4

ページング スクロール ビューは、常にフレーム サイズの倍数をページングします。したがって、あなたの例では、ページングは​​常に +320 です。

この動作は、スクロール ビューのフレームに一致するコンテンツ部分がある場合に適しています。

あなたがしなければならないことは、スクロール ビューの幅を 213 にし、そのclipsToBoundsプロパティを に設定することNOです。その後、スクロール ビューのページを希望どおりに表示すると、フレームの左右にあるものが表示されます。さらに、この左右の領域のタッチをスクロール ビューに委任するためのトリックを実行する必要があります。

この回答で大きく説明されています。

于 2012-10-05T06:59:50.363 に答える
0

スクロールビューのコンテンツ サイズを設定するのを忘れています。

コンテンツ サイズが N 個の画像に収まるように設定されていることを確認してください。

各ページに画像がある10枚の画像をスクロールするためにscrollviewを使用する場合は、scrollViewを次のように設定しcontentSizeます

[scrollView setContentSize:CGSizeMake(320 * 10,200)];
于 2012-10-05T06:34:14.117 に答える