UIScrollView 在动画后更改页面

Posted

技术标签:

【中文标题】UIScrollView 在动画后更改页面【英文标题】:UIScrollView change pages after animation 【发布时间】:2010-10-02 00:46:36 【问题描述】:

好的,我这里有一个复杂的场景。我有一个滚动视图,它水平滚动并包含图块,一次在屏幕上居中 1 个,用户仍然可以通过使 2 个视图的边缘在任一侧可见来查看左侧或右侧是否有更多。我能够以编程方式将视图添加到滚动视图并让分页正常工作,因此用户可以在它们之间来回滑动。另一个要求是有一个初始动画,其中第一个视图滑入,然后被第二个视图弹回左侧。我通过使用一系列 UIView 动画实现了这一点,效果很好。

这是我的问题:动画完成后,您无法向左滚动以到达创建的第一个 UIView。我怀疑这是因为它在滚动视图内容区域的左侧被动画化了。我试图增加滚动视图的 contentSize,但我仍然得到相同的行为。一旦初始滚动视图被移到左边,我就无法滑动到它的页面。

我可以使用一种通用模式以更好的方式完成此任务吗?

【问题讨论】:

【参考方案1】:

在我看来,您正在将子视图的框架向左设置动画,以便第一个视图的框架的 x 坐标为负,而不是向右设置滚动视图的 contentOffset 的动画。如果是这种情况,是否有理由不只是在动画块内设置滚动视图的 contentOffset ?如果有原因,如果在动画完成后您“修复”内容偏移量和子视图的帧,以便没有一个视图处于负位置。

但是,我想我现在的问题多于答案,因此发布代码以显示您如何制作动画以便更容易回答您的问题可能会有所帮助。

【讨论】:

我可以通过提前设置 UIScrollView 的内容大小来解决这个问题,然后在添加视图之前滚动到适当的位置。现在,分页按预期工作。谢谢!

以上是关于UIScrollView 在动画后更改页面的主要内容,如果未能解决你的问题,请参考以下文章

如何保持 UIscrollview 框架固定但动态范围

在 UIScrollView 中为 zoomScale 设置动画时不需要的滚动

有没有办法通过重用视图的 UIScrollView 上的核心动画来更改内容偏移?

UIScrollView contentOffset 在方向更改后损坏

UIScrollView setContentOffset:动画:奇怪的行为

iOS UIScrollView 动画后的动画