gpt4 book ai didi

ios - 为什么每次点击 UITextField 时都会调用 viewDidLayoutSubviews

转载 作者:行者123 更新时间:2023-11-28 10:29:17 25 4
gpt4 key购买 nike

我有一个 viewController,它包含一个 view,里面有四个 UITextFields。我要做的是在加载 ViewController 后立即为 View 设置动画。

当 Controller 加载时,动画以我想要的方式工作,但由于某种原因,每次我点击任何 UITextFields 时都会调用 viewDidLayoutSubviews,因此它会一直为 View 设置动画.

这是正常行为吗,每次点击 TextField 时是否应该调用 viewDidLayoutSubviews?

这是我的代码:

class MyViewController: UIViewController{

@IBOutlet weak var viewAlertContainer: UIView!

override func viewDidLayoutSubviews() {
showAlertViewWithAnimation()
}

func showAlertViewWithAnimation(){
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 2, options: .curveEaseIn, animations: {
self.viewAlertContainer.frame.origin.y = 150
})
}
}

最佳答案

viewDidLayoutSubviews() 将在 Auto Layout 认为它有工作要做的任何时候被调用,而且这可能会在您意想不到的时候发生。这使得执行只发生一次的操作成为一个糟糕的选择。

将您的动画移动到 viewDidAppear() 的重写。这是您第一次知道可以看到 View ,因此是执行动画的合适位置。

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

showAlertViewWithAnimation()
}

关于ios - 为什么每次点击 UITextField 时都会调用 viewDidLayoutSubviews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120182/

25 4 0
文章推荐: javascript - 我的 CSS 或 JavaScript 都没有修改
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com