【问题标题】:Animation in UIScrollView iOS appUIScrollView iOS 应用程序中的动画
【发布时间】:2013-12-09 14:20:55
【问题描述】:

我正在开发一个 iOS 应用程序,我有一个全屏 UIScrollView,顶部有一个 UIImageView,底部有 2 个 UIButton。

当用户滚动时,我想在图像视图上插入动画(可能只是逐渐更改 alpha 参数)。

动画与scrollview相关,例如,如果用户滚动scrollview一半,将只显示一半动画。

我希望我自己解释一下。

我该怎么做?

【问题讨论】:

    标签: ios iphone uiscrollview


    【解决方案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】:

    实现UIScrollViewDelegate协议并使用该方法

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
    
    }
    

    在这里,您可以通过调整视图层的不透明度来更改 UIImageView 的 alpha 值:

    imageView.layer.opacity = ...
    

    这叫做隐式动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多