bibscy
bibscy

Reputation: 2708

Cannot hide view after animation

I am creating an animation which brings an image and a label from the left to the centre of the view.

  1. imageLogo.isHidden = true is not hidden when App is run
  2. labelLogo is not shown at all on the view

I have been reading tutorials, but I just don't see what is wrong with my code.

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

Upvotes: 0

Views: 166

Answers (1)

AkBombe
AkBombe

Reputation: 658

I tried removing following your code from animation method it worked fine. You are trying to add subview in animation method. imageLogo and labelLogo is all ready added in view.

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

Upvotes: 3

Related Questions