作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以在数据加载速度足够快(例如不到一秒)时不显示 UIActivityIndicatorView
。
在我当前的应用中,我的收藏 View 会在每次新搜索时重新加载,但有时搜索速度非常快,指示器 View 会闪烁并立即消失,给应用带来丑陋的整体感觉。
所以基本上我的问题是:当我的加载足够快时,我可以“禁用”UIActivityIndicatorView
吗?
最佳答案
使用此类,如果回调发生时间少于 1 秒,我不会显示事件指示器。
final class DelayableActivityIndicatorView: UIActivityIndicatorView {
static let kDefaultDelay: TimeInterval = 1
private var inProgress = false
func startAnimatingWithDelay(_ delay: TimeInterval = kDefaultDelay) {
inProgress = true
DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
if self.inProgress == true {
self.startAnimating()
}
self.inProgress = false
}
}
func stopAnimatingWithDelay() {
inProgress = false
stopAnimating()
}
}
在 View Controller 中使用它,
class MyViewController : UIViewController {
override func loadView() {
let view = UIView()
view.backgroundColor = .white
self.view = view
}
var spinner: DelayableActivityIndicatorView = {
let view = DelayableActivityIndicatorView(style: .gray)
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(spinner)
spinner.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
spinner.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
spinner.startAnimatingWithDelay()
// replace this code with your network api
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
self.spinner.stopAnimatingWithDelay()
}
}
}
关于ios - 当 UIActivityIndicatorView 加载速度足够快(不到一秒)时不显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963863/
我是一名优秀的程序员,十分优秀!