UIScrollView - 为新的contentSize设置正确的contentOffset会产生不合需要的空白空间

时间:2011-10-04 13:16:28

标签: iphone cocoa-touch ipad uiscrollview uikit

我现在用UIScrollView玩弄了一段时间。我想要的是根据各种因素将子视图插入scrollView。由于我只能在垂直方向滚动滚动视图,因此我会在当前可见视图之前或之后插入子视图。

所以,假设我当前可见视图的帧是(0,0,320,480),scrollView的contentSize是(320,480),当前contentOffset是(0,0)

当我想在currentView上方插入子视图并保持currentView成为焦点时,我将新的子视图插入位置(0,-480,320,480)并将scrollView的contentSize更改为(320,960),同时保持contentOffset与(0,0)相同。

令人惊讶的是,UIScrollView在currentView之后添加了“额外”空间,而不是将其插入到currentView之上。虽然上面新插入的视图永远不会引起关注,但是UIScrollView可能会假设来自错误的contentOffset的contentSize!

我用谷歌搜索,发现有一些others面临类似的问题,但尚未产生结果: Set starting point of content size for UIScrollView

如果我做错了什么,请告诉我?或者这是某种限制等?

谢谢!

编辑:有些threads建议更改contentSize会影响contentOffset属性,因此为了确保这不会导致问题,我只在更改contentSize后才更新contentOffset属性。即便如此,我也面临同样的问题。

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式解决此问题:

  • 使用框架(0,0,320,480)
  • 添加新的子视图
  • 将现有子视图的框架设置为(0,480,320,480)
  • 将contentSize设置为(320,960)
  • 将内容偏移设置为(0,480) - 当然不是动画。

所以,实际上,将一切都降低了480点

答案 1 :(得分:1)

原点始终为(0,0)。如果您要在当前偏移量之上插入一些内容,则需要按480 points向下移动当前视图,在(0,0)添加新视图并将contentOffset设置为(0,480)(以及contentSize为(320,960)