使用带有计时器的NVActivityIndicatorView,它显示很短的时间



我使用NVActivityIndicatorView创建了一个加载页面,并翻转选项卡屏幕5秒钟。

ActivityIndicatorView是短暂的,很快就会消失。 使用计时器,我在五秒钟内完成了一个事件。Timer.scheduledTimer()DispatchQueue.main.async{}. 我以为它运行主线程。我更改了时间间隔,它没有改变。

DispatchQueue.main.async {
self.timer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(self.timerAction), userInfo: nil, repeats: true)
self.performLogin()
}

法典

import UIKit
import NVActivityIndicatorView
class AutoLoginViewController: UIViewController, NVActivityIndicatorViewable {
var timer: Timer?
var indicatorView: NVActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
setup()
getToken(username: "yoshimi", password: "11111")
}

override func viewWillDisappear(_ animated: Bool) {
stopIndicator()
}
// MARK: - Setup
private func setup() {
var midY = self.view.frame.height / 2
var midX = self.view.frame.width / 2
let frame = CGRect(x: midX, y: midY, width: 30, height: 30)
indicatorView = NVActivityIndicatorView(frame: frame,
type: .ballScaleRippleMultiple)
indicatorView?.tintColor = .white
}
// MARK: - Segue
private func performLogin() {
guard
let tabBarController = R.storyboard.main.ramAnimatedTabBarController(),
let mainViewController = tabBarController.viewControllers?.first as? MainViewController
else {
return
}
self.present(tabBarController, animated: true, completion: nil)
}
// MARK: - run indicator
@objc func timerAction() {
let size = CGSize(width: 30, height: 30)
UIView.animate(withDuration: 5.0) {
self.indicatorView.startAnimating()
self.startAnimating(size,message: "Loading...", type: .ballScaleRippleMultiple, fadeInAnimation: nil)
}
timer?.invalidate()
}
private func stopIndicator() {
self.indicatorView.stopAnimating()
self.stopAnimating(nil)
}
// MARK: - APIs
private func getToken(username: String?, password: String?) {
guard
let username = username,
let password = password
else {
return
}
API.LoginClass.getToken(username: username, password: password) { (token, success) in
guard success, let token = token else {
self.loginError()
return
}
Configure.token = token
self.login(username: username, password: password)
}

DispatchQueue.main.async {
self.timer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(self.timerAction), userInfo: nil, repeats: true)
self.performLogin()
}
}
}

你可以试试这个

self.timer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(self.timerAction), userInfo: nil, repeats: true)
DispatchQueue.main.async {
self.performLogin()
}

最新更新