UIScrollView iOS 应用程序中的动画
Posted
技术标签:
【中文标题】UIScrollView iOS 应用程序中的动画【英文标题】:Animation in UIScrollView iOS app 【发布时间】:2013-12-09 14:20:55 【问题描述】:我正在开发一个 ios 应用程序,我有一个全屏 UIScrollView,顶部有一个 UIImageView,底部有 2 个 UIButton。
当用户滚动时,我想在图像视图上插入动画(可能只是逐渐更改 alpha 参数)。
动画与scrollview相关,例如,如果用户滚动scrollview一半,将只显示一半动画。
我希望我自己解释一下。
我该怎么做?
【问题讨论】:
【参考方案1】:使用UIScrollViewDelegate scrollViewDidScroll:
方法。
https://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html#//apple_ref/occ/intfm/UIScrollViewDelegate/scrollViewDidScroll:
但还要检查该委托中的其他方法。
因此,例如,您最终可能会得到类似(或根据您的需要更改):
-(void)scrollViewDidScroll:(UIScrollView*)scrollView
float opacity = ( 100 - scrollView.contentOffset.y ) / 100.0;
opacity = (opacity < 0? 0 : opacity>1? 1 : opacity);
imageView.layer.opacity = opacity;
您可能还想向 Apple 工程师自己学习。查看 WWDC 视频,其中有很多:
探索 iOS 7 上的滚动视图(WWDC 2013) 通过滚动视图增强用户体验(WWDC 2012) 高级 ScrollView 技术(WWDC 2011)【讨论】:
真的很喜欢,就是我要找的。但我在第 1 行有一个错误:二进制表达式(int 和 CGPoint)的操作数无效。我该如何解决? @user3072993 已修复!我错过了 scrollView.contentOffset 示例上的 .y 。如果您更喜欢它,也许您可以将其标记为您的答案。 效果很好..谢谢!有没有一种简单的方法来检测用户是向上滚动还是向下滚动?我在委托方法中看不到这一点.. @user3072993 为此,您需要计算每个委托调用之间的增量变化。这也是为什么我建议检查整个委托,而不是一个方法。您必须计算增量,并将其存储在浮点数中(如果只是垂直 y 值),然后比较 (currentOffset.y - previousY) 以查看它是 > 0(向下)还是 【参考方案2】:实现UIScrollView
Delegate协议并使用该方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
在这里,您可以通过调整视图层的不透明度来更改 UIImageView
的 alpha 值:
imageView.layer.opacity = ...
这叫做隐式动画。
【讨论】:
以上是关于UIScrollView iOS 应用程序中的动画的主要内容,如果未能解决你的问题,请参考以下文章
IOS。当 UIScrollView 滚动时应用另一个滚动动画[关闭]
iOS - UICollectionViewCell 内的 UIScrollView - 内部视图的动画不正确(延迟)