我有一个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 部分中调用了上述方法,因为这在不同尺寸之间变化时会产生相当不错的过渡。如果我将它们放入完成部分,旋转后一切都会“弹出”到位,这很丑陋。这样一来,一切都很顺利,除了最后在正确的位置跳跃。