UIScrollView分页仅适用于水平,但不是垂直的?

时间:2010-01-13 18:30:56

标签: iphone uiscrollview

我一直在搞乱UIScrollView。基本上我已经将7个视图放入其中,这些视图都比contentSize高。我将分页启用设置为是,并且它在水平方向上工作得很好。然而,一个意想不到的副作用是它还垂直启用了分页。我的高视图以contentSize的高度的倍数停止。我想让它垂直滚动,并水平分页。这可能吗?

由于

3 个答案:

答案 0 :(得分:1)

不是AFAIK。您应该将UIScrollView子类化,如文档中所述:

  

子类可以覆盖touchesShouldBegin:withEvent:inContentView:,pagingEnabled和touchesShouldCancelInContentView:方法(由滚动视图调用),以影响滚动视图处理滚动手势的方式。

答案 1 :(得分:1)

只有当一维中的contentSize不等于同一维度中的帧大小时,滚动视图才允许滚动。尺寸也需要均匀。

因此,在您的示例中,请确保正确设置contentSize以使帧高度。这将阻止垂直滚动,无论滚动视图中包含哪些内容。

答案 2 :(得分:0)

“Cocoanetics”是对的。试试这段代码。

 

uiScollView  *view = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 360, 340)];
view.scrollEnabled = YES;
view.pagingEnabled=YES;
int y=20;
for (int i=0; i UIButton *btn=[UIButton buttonWithType:UIButtonTyperoundRect];
[btn setTitle:[NSString stringwithFormate:@"%d",i] forState:UIControlStateNormal];
int x=0;
if (i%2==0) {
x=20;
}
else{
x=190;
}
[btn setFrame:CGRectMake(x, y,170*0.8,170*0.8)];
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
if (i%2==1) {
y=y+170;
} [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
btn.tag=i;
[view addSubview:btn];
}
[view setContentSize:CGSizeMake(360, y+150)];
[view scrollRectToVisible:CGRectMake(0, 0, 360, 340) animated:YES];
view.scrollEnabled=TRUE;
self.view = view;
self.view.backgroundColor = [UIColor clearColor];
[view release];


这适合我。