【发布时间】:2023-03-15 09:20:01
【问题描述】:
我有一个 UIScrollView,它会在每次界面方向更改后更新其框架,保持其高度但动态更新其宽度以始终填充新宽度。由于它是一个启用了分页的水平滚动视图,我自然会根据它的新大小来更新它的内容。我这样做如下(显然这是一个简化的代码,但你应该明白了):
scrollView.frame = CGRectMake(0.0f, 0.0f, window.size.width, 200.0f);
// Content is being deleted here
// Then redraw with the new width in mind
scrollView.contentSize = (window.size.width * [database count]);
[scrollView setContentOffset:CGPointMake(currentPostionX, 0.0f) animated:NO];
这个方法很好用;每次界面方向更改后,滚动视图都会保持其先前的位置。我的问题是它不流畅。事实上,它非常丑陋,经常导致紧张,在 contentOffset 被重置时跳跃“动画”(如果我将 'animated' 设置为 YES 无关紧要)。
必须有更好的方法来做到这一点,并使滚动视图根据其新尺寸保持其位置。
有什么想法吗?
更新:实际上,我在 viewWillTransitionToSize 的 animateAlongsideTransition 部分中调用了上述方法,因为这会在不同尺寸之间变化时创建相当不错的过渡。如果我将它们放入完成部分,旋转后一切都会“弹出”到位,这很丑陋。这样一来,一切都很顺利,除了最后在正确的位置跳跃。
【问题讨论】:
-
您是如何解决问题的?
标签: ios xcode uiscrollview uiinterfaceorientation contentoffset