首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NSLayoutConstraint未设置动画

NSLayoutConstraint未设置动画
EN

Stack Overflow用户
提问于 2018-06-25 04:22:28
回答 2查看 45关注 0票数 0

从这段代码中,除了mainViewConstraint之外,所有的东西都可以很好地进行动画。我试图通过将mainViewConstraint坐标从-195转换为0来使mainView从顶部滑入。不幸的是,它没有从-195移动到0。它从0开始出现。

代码语言:javascript
复制
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
    }
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-28 06:32:55

为了解决这个问题,我在故事板中将mainViewConstraint的位置更改为-195,并对代码进行了以下更改:

代码语言:javascript
复制
    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
EN

Stack Overflow用户

发布于 2018-06-25 19:22:01

在您的代码中,您在动画块中调用animateView(),这似乎是问题所在。

将它移出动画块应该可以解决这个问题。

代码语言:javascript
复制
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

mainViewConstraint.constant = -195

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

self.animateView()

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51013654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档