使用pagingEnabled滚动时,在特定位置停止UIScrollView

时间:2013-05-05 08:02:21

标签: ios uiscrollview

我有以下代码来创建一个滚动视图,在图像的开头和结尾有一个额外的区域(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)。 当我向左滑动时,我希望看到右侧第一张图像的一半,中间的第二张图像和右侧第三张图像的一半。

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

可以吗?

3 个答案:

答案 0 :(得分:0)

只要您正确定义所有内容,就可以。确保指定的内容大小等于您希望滚动的整体大小。确保每个页面大小等于滚动视图的框架。如果框架剪切您的子视图,您可以将clipsToBounds设置为NO。

答案 1 :(得分:0)

您可以通过调整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

答案 2 :(得分:0)

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

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