swift - 动画后无法隐藏 View

标签 swift uiviewanimation

我正在创建一个动画,它将图像和标签从左侧带到 View 的中心。

  1. imageLogo.isHidden = true App 运行时不隐藏
  2. labelLogo 根本没有显示在 View 上

我一直在阅读教程,但我就是看不出我的代码有什么问题。

let paymentLogo = UIImage(named: "paymentImage")
var imageLogo:UIImageView!
var overlayView = UIView()
var logoAppeared:Bool!
let labelLogo = UILabel()

override func viewDidLayoutSubviews() {
    //move picture off the screen here

    self.imageLogo = UIImageView(image:paymentLogo)
    imageLogo.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
    imageLogo.center.x -= 400
    self.view.addSubview(imageLogo)

    self.labelLogo.frame =
        CGRect(x: 0, y: 0, width: 200, height: 21)
    self.labelLogo.center.x -= 400
    self.labelLogo.text = "Booking Completed"
    self.labelLogo.textAlignment = .center
    self.view.addSubview(labelLogo)
}

override func viewDidAppear(_ animated: Bool) {
    UIView.animate(withDuration: 2.0, delay: 0.1, options: [], animations: {
        //animate paymentCompletedLogo
        self.overlayView = UIView(frame: self.view.frame)
        self.overlayView.backgroundColor = UIColor.black
        self.overlayView.alpha = 0.4

        //animate labelLogo
        self.labelLogo.frame = CGRect(x: self.view.center.x, y: 90, width: 200, height: 21)
        self.labelLogo.backgroundColor = UIColor.gray
        self.labelLogo.text = "Booking Completed"
        self.labelLogo.textColor = .black
        self.labelLogo.textAlignment = .center

        //animate imageLogo
        self.imageLogo.frame =
            CGRect(x: self.view.center.x,y: self.view.center.y,width: 100,height: 100)

        self.view.addSubview(self.overlayView)
        self.view.addSubview(self.imageLogo)
        self.view.addSubview(self.labelLogo)
    }) { finished in
        self.overlayView.isHidden =  true
        self.imageLogo.isHidden = true //it is not hidden in simulator

        self.logoAppeared = true
    }
}

最佳答案

我尝试从动画方法中删除跟随您的代码,它工作正常。 您正在尝试在动画方法中添加 subview 。 imageLogo 和 labelLogo 已准备好添加到 View 中。

   self.view.addSubview(self.overlayView)
   self.view.addSubview(self.imageLogo)
   self.view.addSubview(self.labelLogo)

关于swift - 动画后无法隐藏 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42464898/

相关文章:

ios - 如何在动画过程中动态访问半径? (在 CGAffineTransform 期间可能)

ios - 动画约束更改 layoutIfNeeded 慢

ios - removeAllAnimations() 后重置动画

Swift-animate CAshapeLayer 描边颜色

swift - 带有可选参数的类 Init - 不可能?

swift - 在 SwiftUI 中使用获取 View 的宽度

ios - Pod 更新导致错误 [致命 : unable to access]

ios - 优化捕获列表

ios - CGAffineTransformTranslate 翻译时的 SCSS

ios - 如何在 iOS 应用程序中发送文本?