NSLayoutConstraint не анимация - PullRequest
0 голосов
/ 24 июня 2018

Все прекрасно анимируется из этого кода, кроме mainViewConstraint. Я пытаюсь сделать слайд mainView сверху вниз, как это выглядит, путем преобразования координаты mainViewConstraint из -195 в 0. К сожалению, он не перемещается из -195 в 0. Он просто начинает появляться в 0.

import UIKit    

class FirstViewController: UIViewController {

  @IBOutlet weak var bgImage: UIImageView!
  @IBOutlet weak var mainView: UIView!
  @IBOutlet weak var titleLabel: UILabel!
  @IBOutlet weak var findButton: UIButton!
  @IBOutlet weak var mainViewConstraint: NSLayoutConstraint!

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    mainViewConstraint.constant = -195

    for i in [mainView, titleLabel, findButton] {
      i?.alpha = 0
    }

    UIView.animate(withDuration: 1, animations: {
    }) { (true) in
      self.animateView()
    }
  }

  func animateView() {
    UIView.animate(withDuration: 2, animations: {
      self.mainView.alpha = 1
      self.mainViewConstraint.constant = 0
      self.view.layoutIfNeeded()

    }) { (true) in
      self.animateLbl()
    }
  }

  func animateLbl() {
    UIView.animate(withDuration: 1, animations: {
      self.titleLabel.alpha = 1
    }) { (true) in
      self.animateBtn()
    }
  }
  func animateBtn() {
    UIView.animate(withDuration: 1) {
      self.findButton.alpha = 1
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Чтобы исправить это, я изменил расположение mainViewConstraint на -195 в раскадровках и внес следующие изменения в код:

    mainViewConstraint.constant = 0 //-195

    for i in [mainView, titleLbl, findBtn] {
      i?.alpha = 0
    }
    UIView.animate(withDuration: 1, animations: {
      self.bgImage.alpha = 1
    }) { (true) in
      self.animateView()
    }
  }

  func animateView() {
    UIView.animate(withDuration: 2, animations: {
      self.mainView.alpha = 1
      //self.mainViewConstraint.constant = 0
      self.view.layoutIfNeeded()
0 голосов
/ 25 июня 2018

В вашем коде вы вызываете animateView () внутри блока анимации, что, похоже, является проблемой.

Перемещение его из блока анимации должно решить проблему.

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

mainViewConstraint.constant = -195

for i in [mainView, titleLabel, findButton] {
  i?.alpha = 0
}

self.animateView()

}
...