我有一个 UIScrollView,其中启用了仅垂直滚动。我正在显示按钮网格(类似于照片查看器图像网格)。必须根据屏幕方向绘制不同的网格,以便使用所有屏幕空间。考虑到按钮的大小,我可以在纵向模式下每行 3 个,在横向模式下每行 4 个。
我将所有按钮重新定位在:willRotateToInterfaceOrientation:duration 中,然后在我的 UIScrollView 上调用:setContentSize:。除了在调用 SetContentSize: 之后发生的自动滚动之外,一切似乎都运行良好。换句话说,假设我是纵向的,并向下滚动列表的 3/4,当我旋转到横向时,它会自动滚动到顶部。
有趣的是,在相同的场景中,如果我向上或向下轻弹一下滚动,然后立即旋转设备, ScrollView 会正确重绘,并保留当前滚动位置!
所以,要明确一点,这里的罪魁祸首似乎是 SetContentSize:,但显然我必须调用它才能使 ScrollView 正确滚动。
关于如何保留当前滚动位置的任何想法?
谢谢!
最佳答案
您可以尝试实现 UIScrollViewDelegate
方法 scrollViewShouldScrollToTop:
,它告诉调用者是否滚动到顶部。您可能必须在您的委托(delegate)中有一些标志来指示轮换是否正在进行,因为在正常情况下,您实际上可能希望能够点击状态栏并将 ScrollView 滚动到顶部。
另一方面,如果您不希望 ScrollView 自动滚动到顶部,只需实现该委托(delegate)方法并让它返回 NO。
关于iphone - UIScrollView 在方向更改期间在 SetContentSize 之后自动滚动到顶部 - 我怎样才能防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5666743/