Ios UIView.animate未完美设置布尔值的动画

Ios UIView.animate未完美设置布尔值的动画,ios,animation,uiview,swift3,Ios,Animation,Uiview,Swift3,我尝试设置isHidden的动画,它似乎工作正常,但是如果我将yes设置为true 5次,错误地设置了isHidden=false5次,那么有时我应该设置isHidden=true2次或更多时间来显示我的UIView 我错过什么了吗 if (yes) { UIView.animate(withDuration: 0.3, delay:0, animations: { myLabel.isHidden=false } } else {

我尝试设置isHidden的动画,它似乎工作正常,但是如果我将
yes
设置为true 5次,错误地设置了isHidden=false5次,那么有时我应该设置isHidden=true2次或更多时间来显示我的UIView

我错过什么了吗

if (yes)
{
    UIView.animate(withDuration: 0.3, delay:0, animations: {
                myLabel.isHidden=false
            }
}
else
{
    UIView.animate(withDuration: 0.3, delay:0, animations: {
                myLabel.isHidden=true
            }
}

不应设置视图“isHidden”参数的动画。您应该为其alpha设置动画

if (yes)
{
    UIView.animate(withDuration: 0.3, delay:0, animations: {
                myLabel.alpha=1.0
            }
}
else
{
    UIView.animate(withDuration: 0.3, delay:0, animations: {
                myLabel.alpha=0.0
            }
}
--更新--

如果要在动画之后隐藏视图,可以使用以下方法:

myLabel.isHidden=false
UIView.animateWithDuration(0.3, delay: 0.0, options: .CurveEaseOut, animations: {
    myLabel.alpha=1.0
  }, completion: { finished in

  })

UIView.animateWithDuration(0.3, delay: 0.0, options: .CurveEaseOut, animations: {
    myLabel.alpha=0.0
  }, completion: { finished in
    myLabel.isHidden=true
  })

我认为问题在于,在Bool类型上使用的是线性动画,它只有2个值(false=0,true=1)和介于这两者之间的任何其他值(它是pulse)

试试这个:

if (yes)
{
    myLabel.alpha = 0
    myLabel.isHidden = false
    UIView.animate(withDuration: 0.3, animations: {
                myLabel.alpha = 1
            })
}
else
{
    UIView.animate(withDuration: 0.3, animations: {
                myLabel.alpha = 0
            }, completion: { (status) in
                myLabel.isHidden = true
            })
}

但是我需要设置isHidden的动画,这样在它从视图中删除后,自动布局会收缩布局。但是我需要设置isHidden的动画,这样在它从视图中删除后,自动布局会收缩布局。因此,请尝试使用alpha属性设置动画,并将高度设置为
UILabel
frame。