0

我有一个UIScrollView大小(320,160)。我在其中添加了一些UIImageView大小(213,160)。第一个UImageView从 54 (x) 开始,依此类推,我在每个UIImageView. 我也启用pagingEnable了 in IB& in coding。我的问题是它不能按照它的属性正常工作!当我滚动时,它应该UIImageViews在每个单曲中显示我,page而不是向我显示类似查看屏幕截图的内容我想要输出类似这样的内容,请参阅输出屏幕截图

我在哪里做错了?我还有<(上一个)和>(下一个)的功能来显示图像。我昨天问了一个问题,我接受了,但是我的要求几乎没有变化,它不会成为我的解决方案。看到我的问题。

有没有我必须设置的特殊属性,或者我应该实现的一些逻辑?我检查并尝试过的所有示例,但我发现我的要求有些特殊。指点我!谢谢。

编辑:

- (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 设置contentSize

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