iphone - iOS : How to do proper paging in UIScrollView?

标签 iphone ios uiscrollview custom-paging scroll-paging

我有一个 UIScrollView大小(320,160)。我正在添加一些 UIImageView放入其中,大小为(213,160)。第一个UImageView从 54 (x) 开始,依此类推,我在每个 UIImageView 之间添加了一个 5.0 的空格。 .我还启用了 pagingEnableIB & 在 coding .我的问题是它没有按照其属性正常工作!当我滚动时,它应该会显示 UIImageViews每单page相反,它向我显示类似 see screenshot 的内容我想要这样的输出 see output screenshot

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

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

已编辑:

- (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];
 }
}

最佳答案

分页 ScrollView 始终分页其框架大小的倍数。所以在你的例子中分页总是+320。

如果您的内容部分与 ScrollView 的框架匹配,则此行为很好。

您需要做的是,将 ScrollView 的宽度设置为 213,并将其 clipsToBounds 属性设置为 NO。 之后,您的 ScrollView 将按照您想要的方式进行翻页,并且您可以看到框架外的左侧和右侧内容。 此外,你必须做一个技巧来让这个左右区域委托(delegate)触摸到 ScrollView 。

this answer 中有很好的解释.

关于iphone - iOS : How to do proper paging in UIScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12740425/

相关文章:

iphone - 如何使用 iPhone 应用程序拍照?

iphone - 向网站发送数据并获取搜索结果 iOS

ios - Braintree DropIn + Apple Pay,不出现 Apple Pay 项目

ios - 当 View Controller 内部有 ScrollView 时处理键盘事件

iphone - 是否可以删除 iOS 主从 View 上的 'Edit' 和 '+' 按钮?

iphone - 如何在 iOS 上获取用户代理?

ios - 错误 : removing the root node of a scene from its scene is not allowed

ios - 更改段控件内的按钮文本

ios - 添加 View 时 UIScrollView 不会滚动

ios - 较小时 UIScrollView 的中心内容