0

Web から画像を読み込むために追加AsyncImageViewしていますが、正常に動作しています。追加した画像は 8 つあります。UIScrollView問題は、paging有効pagingEnableにしましYESたが、希望どおりにならないことです。contentOffset別の方法で設定しようとしてxいますが、効果がありません。スクロールしたり、選択したり、オプションを選択したりするときにcenter、各画像が表示されるようにします。UIScrollViewnextprevious

これは、画像を追加するコードですUIScrollView

arrImgUrls は NSArray です

_currentImage、_imageCount は整数です

-(void)setImagesToScrollView
{
    [btnPrev setEnabled:NO];

    _currentImage = 0;

    _imageCount = [arrImgUrls count];

    int x=20;
    int y=0;
    int w=213;
    int h=160;

    for (int i=0; i<[arrImgUrls count]; i++) 
    {
        AsyncImageView *asyncImageView = [[AsyncImageView alloc] initWithFrame:CGRectMake(x, y, w, h)];
        [asyncImageView setDelegate:self];
        [asyncImageView.layer setMasksToBounds:YES];        
        NSString *urlImage = [arrImgUrls objectAtIndex:i];
        NSURL *url = [NSURL URLWithString:urlImage];
        [asyncImageView loadImageFromURL:url];
        [asyncImageView release];
        [scrollImages addSubview:asyncImageView];
        x=(x+w)+10;
    }

    scrollImages.contentSize=CGSizeMake(x, scrollImages.frame.size.height);
}

これは、以前に表示したコードpreviousまたはnextの画像ですUIScrollView

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

    [btnNext setEnabled:YES];
    
    if (_currentImage<=0)
    {
        _currentImage = 0;
        [btnPrev setEnabled:NO];
    }

    [scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth)+10, 0) animated:NO];
}

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

    [btnPrev setEnabled:YES];

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

    [scrollImages setContentOffset:CGPointMake(_currentImage*imageWidth, 0) animated:NO];
}

すべての画像がロードされ、UIScrollView問題のみに追加されたのはcenter、ユーザーscrollsまたは実行時にそれを表示することpreviousですnext

私が間違っているところを教えてください。

ありがとう!

4

2 に答える 2

3

まず第一に、それ_currentImageが適切に維持されているかどうかを確認してください。

次の画像をフォローしてみてください

CGRect frame;
frame.origin.x = (imageWidth * _currentImage) +10;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES]; // NO if you don't want animation

この行の代わりに

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

& 前の画像

CGRect frame;
frame.origin.x = (imageWidth * _currentImage) - 10;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES]; // NO if you don't want animation

ここに、あなたが望むような良い例が1つあります

画像ギャラリー

于 2012-10-04T10:36:19.693 に答える
0

問題は、AsyncImageViewに設定しているフレームにあります。ページングがどのように機能するかをよく知っている必要があります。それはあなたがscrollviewに割り当てたrectをチェックし、scrollviewの中心にスクロールするので、画像が中央に揃えられていない左側または右側に配置されているのを見るかもしれません。フレームAsyncImageViewをx=0&width = 320として設定してみて、スクロールビューの動作を確認してください。

于 2012-10-04T11:29:36.773 に答える