UIScrollView 滚动时为对象设置动画

Posted

技术标签:

【中文标题】UIScrollView 滚动时为对象设置动画【英文标题】:Animate objects when UIScrollView scrolls 【发布时间】:2013-08-12 05:18:50 【问题描述】:

我有一个UIScrollView,它有两页,只能水平滚动。

使用UIPageControl 控制滚动和分页。我在滚动视图上放置了一个UIImageView,其中包含一个 iPhone 的图像(在下图中以红色显示),在第 1 页内显示 Hello

当用户从第 1 页滚动到第 2 页时,我想为UIImageView 设置动画以旋转并更改其位置,如图所示。此外,理想情况下,当用户从 page-2 滚动回 page-1 时,动画应该会向后旋转。

UIImageView 的动画或移动是基于用户水平滚动的程度,而不是基于时间。

如何根据UIScrollView的滚动位置来回旋转UIImageView

【问题讨论】:

您可以使用CABasicAnimationtransform.rotation animationWithKeyPath 来根据@rob 的建议制作这种类型的旋转动画 你提到的animationWithKeyPath。您可能知道在 Apple Doc 旁边的哪里可以找到更多信息 检查这个:- developer.apple.com/library/ios/documentation/GraphicsImaging/… 【参考方案1】:

为您的滚动视图设置委托。可能您希望您的视图控制器成为委托。您需要将UIScrollViewDelegate 添加到其协议列表中。

然后,在委托中实现scrollViewDidScroll:。在scrollViewDidScroll: 中,查看滚动视图的contentOffset。基于contentOffset,设置图像视图的transformcenter旋转并移动到你想要的位置。

【讨论】:

您能否添加一个使用transformcontentOffset 的示例【参考方案2】:

要查看滚动视图滚动了多少,您可以查看 UIScrollView 的 contentOffset 属性:

contentOffset - 内容视图的原点所在的点 从滚动视图的原点偏移。

然后要旋转该图像视图,您可以这样做:

self.imageview.transform = CGAffineTransformMakeRotation(M_PI/2);

就动画而言,我个人没有太多经验。但是你可以看看Simple Animation Using UIImageView。

【讨论】:

而不是固定的 M_PI/2 ,我们可能需要根据内容偏移量来改变角度

以上是关于UIScrollView 滚动时为对象设置动画的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionVIew:在滚动时为单元格设置动画

UICollectionVIew:在视图滚动时为单元格设置动画

UI基础篇之UIScrollView

javascript [在页面滚动上设置动画粘贴CTA]这将在滚动时为点击元素设置动画,并在用户点击时将其关闭。 #javascript #css #sitewre

javascript [在页面滚动上设置动画粘贴CTA]这将在滚动时为点击元素设置动画,并在用户点击时将其关闭。 #javascript #css #sitewre

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