UIScrollView内容大小问题

5

在我的视图中,我创建了一个宽度为320,高度为70的滚动视图。

响应用户触摸按钮,我扩展滚动视图,使其大小为380(h) x 320(w)。

以下是此代码:

CGRect scrollviewFrame = CGRectMake(0, 30, 320, 380);
[scrollView setFrame:scrollviewFrame];
[self layoutScrollImages:YES];
CGSize srect =  CGSizeMake([scrollView bounds].size.width, (kNumImages * kScrollObjHeight));
[scrollView setContentSize:srect];

当我调试这个项目时,我发现srect的大小为320(w)x 8000(h); 然而我的问题是可滚动区域(用户可以实际触摸以滚动scrollview的区域)仍然与其原始大小相同。显然,我漏掉了某些东西,有人知道是什么吗?编辑:我创建了一个示例项目来说明我遇到的问题,它在此处提供:http://dl.dropbox.com/u/9930498/ScrollViewTest.zip

我猜你已经回答了自己的问题,你是否也增加了内容大小,以对应帧大小? - rptwsthi
你是否增加了滚动视图的contentSize大小呢? - rptwsthi
@rptwsthi 是的,请查看上面代码片段的最后一行。 - Mick Walker
内容大小将与目标大小相匹配。 - Nick Turner
2个回答

2
我认为,您的以下代码行存在问题。
CGSize srect =  CGSizeMake([scrollView bounds].size.width, (kNumImages * kScrollObjHeight));
   [scrollView setContentSize:srect];

调试您的程序并查看srect的内容,另外让我们知道下面两个常量的值:kNumImageskScrollObjHeight

const CGFloat kScrollObjHeight = 80; const NSUInteger kNumImages = 100; - Mick Walker
srect = 宽度320 / 高度8000 - Mick Walker

-1

你需要同时更改scrollview的contentSize和frame。 也许这个链接会有所帮助:UIScrollView类参考

在设置新尺寸时执行此操作。

scrollView.scrollEnabled = YES;
scrollView.showsHorizontalScrollIndicator = YES;
scrollView.showsVerticalScrollIndicator = YES;
[scrollView setFrame:CGRectMake(0, 30, 320, 380)];
CGSize srect =  CGSizeMake([scrollView bounds].size.width, (kNumImages * kScrollObjHeight));
[scrollView setContentSize:srect];
[self layoutScrollImages:YES];

真糟糕.. :) 我也不知道该怎么办了... :D,抱歉。 - JNK
@Mick,你的意思是说上面的示例代码也有同样的问题吗? - Deepak Danduprolu
不,我的意思是这并不适用于我的情况。我创建了一个示例项目来说明我遇到的问题,你可以从这里下载http://dl.dropbox.com/u/9930498/ScrollViewTest.zip - Mick Walker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接