【问题标题】:UIScrollView contentSize Issue - With example codeUIScrollView contentSize 问题 - 带有示例代码
【发布时间】:2011-05-28 16:19:30
【问题描述】:

在我的视图中,我创建了一个宽度为 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 + 10)));
[scrollView setContentSize:srect];

上面sn-p中提到的常量定义为:

const CGFloat kScrollObjHeight  = 80;
const NSUInteger kNumImages     = 100;

当我调试这个项目时,我可以看到 srect 的大小是 320 (w) x 8000 (h);但是我的问题是可滚动区域(用户实际上可以触摸以滚动滚动视图)保持与原始大小相同。

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

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

【问题讨论】:

    标签: iphone objective-c ios ios4 uiscrollview


    【解决方案1】:

    您的示例中的问题是您的视图加载结构非常奇怪。因此,您添加到 DetailScrollView 实例的视图是 DetailScrollView.xib 的根视图,而不是滚动视图本身,我相信这是您所期望的。

    解决问题的最快方法是调整 DetailScrollView.xib 中的根视图以自动调整宽度和高度。

    【讨论】:

      【解决方案2】:

      UIView 无法响应超出其父视图范围的触摸。在您的示例中,您似乎展开了滚动视图,但滚动视图的父级仍然只有 100 个单位高。

      【讨论】:

        【解决方案3】:

        你应该把scrollView想象成一个窗口,这里所说的窗口是指scrollView的框架,也是scrollView检测到你的触摸的坐标。通过将 contentView 设置为 320 (w) x 8000 (h),您只需更改滚动视图的内容,即该窗口后面的完整区域。

        通过扩展内容视图,scrollView 可以滚动更广泛的区域,但为了检测更大矩形中的触摸,您应该更改滚动视图的框架。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-14
          相关资源
          最近更新 更多