Ios 如何在viewDidLoad中为性能检查添加延迟?
在我的第一个viewController的viewDidLoad中,如果用户经过身份验证 通过性能检查自动发送到主页Ios 如何在viewDidLoad中为性能检查添加延迟?,ios,swift,swift4,Ios,Swift,Swift4,在我的第一个viewController的viewDidLoad中,如果用户经过身份验证 通过性能检查自动发送到主页 override func viewDidLoad() { super.viewDidLoad() Auth.auth().addStateDidChangeListener() { (auth, user) in if user != nil{ self.ballClipRotatePulse.startAnimat
override func viewDidLoad() {
super.viewDidLoad()
Auth.auth().addStateDidChangeListener() { (auth, user) in
if user != nil{
self.ballClipRotatePulse.startAnimating()
self.performSegue(withIdentifier: "goToHome1", sender: self)
}
}
}
但是,由于我希望用户首先看到加载的动画,如何才能使performSegue比self.ballciprotatepulse.startAnimating()晚两秒启动?,语法很简单:
Auth.auth().addStateDidChangeListener() { (auth, user) in
if user != nil {
self.ballClipRotatePulse.startAnimating()
// to run something in 2 seconds
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
// your code here
self.performSegue(withIdentifier: "goToHome1", sender: self)
}
}
}
试试这个
let when = DispatchTime.now() + 2.0 // 2 is desirable delay
DispatchQueue.main.asyncAfter(deadline: when){ // your postponed code }
顺便说一句,别忘了用户在延迟期间可能会触碰某些界面元素,因此您的应用程序可能会出现意外行为。更好的解决方案是从动画完成处理程序调用
performsgue
。您可以在ViewDidDisplay中调用performsgue
,但仍要延迟,然后使用timer您可以使用DispatchQueue您可以帮我举个例子吗,这是我第一次尝试这样做吗?动画停止时没有通知或完成处理程序吗?等待硬编码的时间总是最糟糕的解决方案/情况。