动画后无法隐藏视图

时间:2017-02-26 04:55:24

标签: swift uiviewanimation

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

    运行App时
  1. imageLogo.isHidden = true未隐藏
  2. 视图上根本没有显示
  3. labelLogo

    我一直在阅读教程,但我不知道我的代码有什么问题。

    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
        }
    }
    

1 个答案:

答案 0 :(得分:3)

我尝试从动画方法中删除你的代码,它运行正常。 您正尝试在动画方法中添加子视图。 imageLogo和labelLogo已准备好添加到视图中。

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