【问题标题】:Stopping UIScrollView at specific place while scrolling with pagingEnabled使用 pagingEnabled 滚动时在特定位置停止 UIScrollView
【发布时间】:2013-05-05 08:02:21
【问题描述】:

我有以下代码来创建一个滚动视图,在图像的开头和结尾处有额外的区域(50 个点)。

UIScrollView* scroll = [[UIScrollView alloc] initWithFrame: CGRectMake(0,0,200,100)];
scroll.contentSize = CGSizeMake(400,100);

UIImageView* img1 = [[UIImageView alloc] initWithFrame: CGRectMake(50,0,100,100);
UIImageView* img2 = [[UIImageView alloc] initWithFrame: CGRectMake(150,0,100,100);
UIImageView* img3 = [[UIImageView alloc] initWithFrame: CGRectMake(250,0,100,100);

//Adding images to ImageViews

scroll.pagingEnabled = YES;
[scroll addSubView:img1];
[scroll addSubView:img2];
[scroll addSubView:img3];

第一次看到视图时,我会看到左侧的附加区域 (0-50),然后是第一张图像 (50-150),然后是第二张图像的一半 (150-200)。 当我向左滑动时,我想在右边看到第一张图片的一半,在中间看到第二张图片,在右边看到第三张图片的一半。

当我再次向左滑动时,我想在中间看到第三张图片,左边是第二张图片的一半,右边是额外的区域。

可以吗?

【问题讨论】:

    标签: ios uiscrollview


    【解决方案1】:

    只要你正确定义一切都是可能的。确保分配的内容大小等于您希望滚动浏览的总大小。确保每个页面大小等于滚动视图的框架。如果框架剪辑了您的子视图,您可以将clipsToBounds 设置为 NO。

    【讨论】:

    【解决方案2】:

    你可以通过调整 UIScrollView 的 contentSize 来做到这一点

    - (void)addImagesToScrollView{
        //An offset from where imageViewStarts
        CGFloat xOffset = 50.0f;
        CGRect imageViewFrame = CGRectMake(xOffset, 0.0f, 100.0f, 100.0f);
    
        for (NSString *imageName in @[@"image1.jpg",@"image2.jpg",@"image3.jpg"])
        {
            UIImageView *imageView = [[UIImageView alloc]initWithFrame:imageViewFrame];
            UIImage *image = [UIImage imageNamed:imageName];
            imageView.image = image;
    
            [self.scrollView addSubview:imageView];
    
            imageViewFrame.origin.x+=imageViewFrame.size.width;
        }
    
        CGSize contentSize = self.scrollView.frame.size;
        //Content size is calculate from the imageViewFrame and an offset is added to it
        contentSize.width = imageViewFrame.origin.x+xOffset;
        [self.scrollView setContentSize:contentSize];
    
    }
    

    Source Code

    【讨论】:

      【解决方案3】:

      您可以使用以下代码滚动到滚动视图中的特定位置

      [YOURSCROLLVIEW setContentOffset:CGPointMake(x, y) animated:YES];
      

      【讨论】:

        猜你喜欢
        • 2011-05-24
        • 1970-01-01
        • 2015-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        相关资源
        最近更新 更多