通过分页水平添加图像到UIScrollView

时间:2013-11-05 11:22:42

标签: ios iphone

我正在尝试使用页面在水平行中显示图像,每个页面包含4个图像,可能由一行或没有空格的小空间分隔。当用户水平滚动时,接下来的四个图像显示在视图的中心。但是使用这段代码:

 UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, screenHeight/4, screenWidth, screenHeight/4)];
    scroll.showsHorizontalScrollIndicator = YES;
    scroll.showsVerticalScrollIndicator=NO;
    scroll.pagingEnabled = YES;
    NSInteger numberOfViews = 3;
    int k=1;
    for (int i = 0; i < numberOfViews; i++) {
        CGFloat xOrigin = i * self.view.frame.size.width;
        UIView *awesomeView = [[UIView alloc] initWithFrame:CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)];
        awesomeView.backgroundColor = [UIColor colorWithRed:0.5/i green:0.5 blue:0.5 alpha:1];
        [scroll addSubview:awesomeView];
        for (int j=0; j<4; j++) {
            NSString *imageName = [NSString stringWithFormat:@"image%d.png", k];
            UIImage *image = [UIImage imageNamed:imageName];
            UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
            CGRect imageFrame=CGRectMake(0, k*screenHeight/4, screenWidth/5, screenHeight/5);
            imageView.frame=imageFrame;
            [awesomeView addSubview:imageView];
            k++;
        }

图像在第一页视图上垂直显示。此外,它看起来像垂直滚动工作。我缺少什么?

2 个答案:

答案 0 :(得分:1)

在这一行:

CGRect imageFrame=CGRectMake(0, k*screenHeight/4, screenWidth/5, screenHeight/5);

你正在搞乱你的imageView(在UIView里面 - awesomeView)。

您的k变量是1,2,3,4

所以我假设你有四个垂直的imageViews,下一个'column'在左边有四个图像,对吧?

此外,您没有为contentSize设置scrollView,因此您可能看不到第二个“列”

答案 1 :(得分:-1)

您需要设置scrollView的contentSize:

scroll.contentSize = CGSizeMake(yourContentWidth,yourContentHeight);

要将滚动限制为仅垂直,您可以在UIScrollViewDelegate中实现scrollViewDidScroll:

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
   [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, yOffset)];
}

其中yOffset是一个常量ivar,您可以在设置scrollView时设置。