【问题标题】:UIScrollView contentSize IssueUIScrollView contentSize 问题
【发布时间】:2011-05-28 09:00:57
【问题描述】:

在我的视图中,我创建了一个宽度为 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);但是我的问题是可滚动区域(用户实际上可以触摸以滚动滚动视图)保持与原始大小相同。

我显然遗漏了一些东西,有人知道它是什么吗?

编辑:我创建了一个示例项目来说明我遇到的问题,它可以在这里找到:http://dl.dropbox.com/u/9930498/ScrollViewTest.zip

【问题讨论】:

  • 我猜你已经回答了你的问题,你是否也增加了内容大小,对应于框架大小?
  • 你是否也增加了 contentSize(你的滚动视图)......
  • @rptwsthi 是的,看上面代码sn -p的最后一行
  • 内容大小将与目标大小匹配。

标签: iphone ios uiscrollview


【解决方案1】:

我认为,您的以下代码行有问题。

CGSize srect =  CGSizeMake([scrollView bounds].size.width, (kNumImages * kScrollObjHeight));
   [scrollView setContentSize:srect];

调试你的程序,看看 srect 的内容,也让我们知道下面两个常量的值

kNumImages,kScrollObjHeight.

【讨论】:

  • const CGFloat kScrollObjHeight = 80; const NSUInteger kNumImages = 100;
  • srect = 宽度 320 / 高度 8000
【解决方案2】:

您需要更改滚动视图的 contentSize 以及框架。 也许这也会有所帮助:UIScrollView Class Reference

在设置新尺寸时这样做

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,对不起
  • @Mick 你的意思是说即使是上面的示例代码也有同样的问题?
  • 不,我的意思是说它并不真正适用于我的场景。我创建了一个示例项目来说明我遇到的问题,您可以从这里获取它dl.dropbox.com/u/9930498/ScrollViewTest.zip
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2013-03-24
  • 1970-01-01
  • 2012-10-02
相关资源
最近更新 更多