我有一个UIScrollView,其中只启用垂直滚动。我正在显示一个按钮网格(类似于照片查看器图像网格)。网格必须根据屏幕方向以不同方式绘制,以便使用所有的屏幕空间。鉴于我的按钮的大小,我可以纵向放入3行,横向放入4行。在定向更改期间,UIScrollView在SetContentSize之后自动滚动到顶部 - 我该如何防止该问题?
我重新定位了所有按钮:willRotateToInterfaceOrientation:duration,然后在我的UIScrollView上调用:setContentSize:。一切似乎都很好,除了在调用SetContentSize之后发生的自动滚动之外:换句话说,假设我处于肖像状态,并沿着列表的3/4滚动,当我旋转到横向时,它会自动将所有背部滚动到顶部。
有趣的是,在相同的情况下,如果我做一个小型轻弹向上或向下滚动,然后立即旋转设备,滚动视图会正确重绘,并保留当前滚动位置!
所以,要清楚,这里的罪魁祸首似乎是SetContentSize :,但显然我必须调用该滚动视图才能正确滚动。
关于如何保留当前滚动位置的任何想法?
谢谢!
这没有按”工作。这与使用相同的效果:scrollView.scrollsToTop = NO;其中,是的,当点击状态栏时防止自动滚动到顶部,但是,我在原始问题中描述的行为仍然存在... – bpatrick100 2011-04-14 17:36:20
另一个想法:在调用'setContentSize:'之前,请记住你的内容,然后在调用之后,调用'setContentOffset:'。在设置内容大小时,内容偏移量可能会有意地重置为(0,0)。您可能已将内容大小重置为不再包含内容偏移量在重置大小之前所包含的内容大小。因此,通过确保在内容大小更改后始终显示某些内容,SDK在某种程度上可能会保护自己和用户体验。 – 2011-04-14 17:45:07