UIView subView alpha 动画不起作用

Posted

技术标签:

【中文标题】UIView subView alpha 动画不起作用【英文标题】:UIView subView alpha animation not working 【发布时间】:2018-01-11 19:03:22 【问题描述】:

UIScrollView 滚动一定量时,我正在尝试执行子视图的 alpha 动画。我有 UIView 有另一个 UIView 作为孩子。

改变下面的变量来触发动画

var isExpanded: Bool = false 
    didSet 
        if (oldValue != isExpanded) 
            toggleExpanded()
        
    

我已经尝试过选项 1:

func toggleExpanded() 
    UIView.animate(withDuration: 300 , animations: 
        if (self.isExpanded) 
            self.mySubView.alpha = 1.0
         else 
            self.mySubView.alpha = 0.0
        
    )

还有选项 2:

func toggleExpanded() 
    if (isExpanded) 
        mySubView.alpha = 1.0
     else 
        mySubView.alpha = 0.0
    

    UIView.animate(withDuration: 300 , animations: 
        self.layoutIfNeeded()
    )

任何一个似乎都有效,alpha 立即更改,在选项 1 中它似乎甚至相反。例如,自动布局约束会影响这里的动画吗?遇到此类问题从哪里开始?

谢谢。

【问题讨论】:

【参考方案1】:

您的第一个解决方案是正确的,但问题在于持续时间。 duration 以秒为单位,尝试 1 或 0.5 秒,一切都会好起来的。

查看documentation 的animate(withDuration:animations:completion:) 了解更多信息。

【讨论】:

我只是注意到它以秒为单位而不是毫秒:D

以上是关于UIView subView alpha 动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章

视图不在屏幕时的 UIView 动画 alpha 不起作用

动画 UIView 宽度不起作用

UIView Animation 中的 Alpha 变化没有影响,在 UIView Animation 之外很好

使用 UIViewPropertyAnimator 依次为 UIView 的 alpha 设置动画

动画 UIView alpha 时闪烁

从 UIScrollview UIView SubView 推送到另一个 ViewController