我正在尝试使用页面在水平行中显示图像,每个页面包含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++;
}
图像在第一页视图上垂直显示。此外,它看起来像垂直滚动工作。我缺少什么?
答案 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时设置。