1

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

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

有可能吗?

4

3 回答 3

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

}

源代码

于 2013-05-05T10:12:52.447 回答
0

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

[YOURSCROLLVIEW setContentOffset:CGPointMake(x, y) animated:YES];
于 2013-11-14T07:33:26.100 回答
0

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

于 2013-05-05T08:24:49.250 回答