iOS标签可见性切换不设置动画



我正试图基于UIImageView上的点击手势来切换UILabel的可见性。执行切换的代码如下:

func imageTapped(img: UIImageView) {
    print(photoTitle.hidden)
    if (photoTitle.hidden) {
        UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
            self.photoTitle.alpha = 1
            }, completion: nil)
    }
    else {
        UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
            self.photoTitle.alpha = 0
            }, completion: nil)
    }
    self.photoTitle.hidden = !self.photoTitle.hidden
}

问题是它似乎忽略了第二次点击时的动画,即再次隐藏UILabel。它只是变得不可见,而不是逐渐设置动画。在viewdDidLoad()中,我将photoTitle.hidden=true初始化为初始不可见。

有明显的错误吗?

您需要将self.photoTitle.hidden = true移动到其他条件的完成块中

hidden不适用于此动画,您可以代替alpha

只需尝试更改类似的功能

Swift 2

func imageTapped(img: UIImageView) {
    print(photoTitle.hidden)
    UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
        self.photoTitle.alpha = self.photoTitle.alpha < 0.5 ? 1.0 : 0.0
    }, completion: nil)
}

Swift 3、4、5

func imageTapped(img: UIImageView) {
    print(photoTitle.hidden)
    UIView.animate(withDuration: 0.5, delay: 0, options: UIView.AnimationOptions.curveEaseInOut, animations: {
        self.photoTitle.alpha = self.photoTitle.alpha < 0.5 ? 1.0 : 0.0
    }, completion: nil)
}

最新更新