Ork*_*ade 32 uitableview uiactivityindicatorview ios swift
当我在我的标签之间切换它加载几秒钟,我想知道我的数据正在加载.为此,我决定添加一个活动指标.
我写了一个小函数:
func showActivityIndicator() {
dispatch_async(dispatch_get_main_queue()) {
self.spinner = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)
self.spinner.frame = CGRect(x: 0.0, y: 0.0, width: 80.0, height: 80.0)
self.spinner.center = CGPoint(x:self.loadingView.bounds.size.width / 2, y:self.loadingView.bounds.size.height / 2)
self.loadingView.addSubview(self.spinner)
self.view.addSubview(self.loadingView)
self.spinner.startAnimating()
}
}
Run Code Online (Sandbox Code Playgroud)
这将显示我的指标.当我从infoController中点击按钮时尝试使用它:
@IBAction func goToMainFromInfo(sender: AnyObject) {
self.showActivityIndicator()
self.performSegueWithIdentifier("fromMainToInfoWActivity", sender: nil)
self.hideActivityIndicator()
}
}
Run Code Online (Sandbox Code Playgroud)
我在segue执行之前展示并隐藏在之后.它对我没有帮助.当我尝试使用同步时:
@IBAction func goToMainFromInfo(sender: AnyObject) {
dispatch_async(dispatch_get_main_queue()) {
self.showActivityIndicator()
self.performSegueWithIdentifier("fromMainToInfoWActivity", sender: nil)
self.hideActivityIndicator()
}
}
Run Code Online (Sandbox Code Playgroud)
但它也没有帮助.当我按Tab键时,不透明度变为0.5,我在加载时等待.但我没有看到我的活动指标.
问题是什么?
Lyd*_*dia 52
试试这个:
var indicator = UIActivityIndicatorView()
func activityIndicator() {
indicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 40, 40))
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
indicator.center = self.view.center
self.view.addSubview(indicator)
}
Run Code Online (Sandbox Code Playgroud)
你想在哪里开始制作动画
indicator.startAnimating()
indicator.backgroundColor = UIColor.whiteColor()
Run Code Online (Sandbox Code Playgroud)
停止:
indicator.stopAnimating()
indicator.hidesWhenStopped = true
Run Code Online (Sandbox Code Playgroud)
注意:避免同时调用start和stop.只是给出一些条件.
小智 18
Swift 3.0
// UIView扩展
fileprivate var ActivityIndicatorViewAssociativeKey = "ActivityIndicatorViewAssociativeKey"
public extension UIView {
var activityIndicatorView: UIActivityIndicatorView {
get {
if let activityIndicatorView = getAssociatedObject(&ActivityIndicatorViewAssociativeKey) as? UIActivityIndicatorView {
return activityIndicatorView
} else {
let activityIndicatorView = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
activityIndicatorView.activityIndicatorViewStyle = .gray
activityIndicatorView.color = .gray
activityIndicatorView.center = center
activityIndicatorView.hidesWhenStopped = true
addSubview(activityIndicatorView)
setAssociatedObject(activityIndicatorView, associativeKey: &ActivityIndicatorViewAssociativeKey, policy: .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
return activityIndicatorView
}
}
set {
addSubview(newValue)
setAssociatedObject(newValue, associativeKey:&ActivityIndicatorViewAssociativeKey, policy: .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
Run Code Online (Sandbox Code Playgroud)
// NSObject扩展
public extension NSObject {
func setAssociatedObject(_ value: AnyObject?, associativeKey: UnsafeRawPointer, policy: objc_AssociationPolicy) {
if let valueAsAnyObject = value {
objc_setAssociatedObject(self, associativeKey, valueAsAnyObject, policy)
}
}
func getAssociatedObject(_ associativeKey: UnsafeRawPointer) -> Any? {
guard let valueAsType = objc_getAssociatedObject(self, associativeKey) else {
return nil
}
return valueAsType
}
}
Run Code Online (Sandbox Code Playgroud)
开始动画
tableView.activityIndicatorView.startAnimating()
停止动画
tableView.activityIndicatorView.stopAnimating()
你可以在Magic中找到更多代码
Rag*_*gul 14
Swift 2+
class ViewController: UITableViewController {
weak var activityIndicatorView: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
tableView.backgroundView = activityIndicatorView
self.activityIndicatorView = activityIndicatorView
activityIndicatorView.startAnimating()
}
...
}
Run Code Online (Sandbox Code Playgroud)
我使用两种扩展方法来添加一个UIActivityIndicatorView作为backgroundViewtableview 的。
extension UITableView {
func showActivityIndicator() {
DispatchQueue.main.async {
let activityView = UIActivityIndicatorView(style: .medium)
self.backgroundView = activityView
activityView.startAnimating()
}
}
func hideActivityIndicator() {
DispatchQueue.main.async {
self.backgroundView = nil
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以像这样显示/隐藏它。
tableView.showActivityIndicator()
tableView.hideActivityIndicator()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46090 次 |
| 最近记录: |