当图像通过 contentsOfURL 同步下载时开始动画 UIActivityIndicator
Start animating UIActivityIndicator when image downloads throug contentsOfURL synchronous
我正在尝试显示 UIActivityIndicator
图片开始下载的时间,它会一直显示,直到所有图片都下载完毕。
但是 UIActivityIndicator
不是动画,它是在所有图像都下载完后才动画。我发现 contentsOfURL
是同步方法并阻塞主线程。我想使用 contentsOfURL
下载图片。任何人都知道我如何在图像开始下载时制作动画 UIActivityIndicator
吗?
谢谢
var indeX = 0
var imageArrayNsData : [NSData] = []
var posts = NSMutableArray()
myActivityIndicator.startAnimating()
self.view.addSubview(myActivityIndicator)
self.view.userInteractionEnabled = false
for _ in posts.valueForKey("enclosure") as! [NSString]{
let picURL = self.posts.objectAtIndex(indeX).valueForKey("enclosure") as! String
let url = NSURL(string: picURL)
let data = NSData(contentsOfURL: url!)
let IMG = UIImage(data: data!)
let dtA : NSData = NSData(data: UIImagePNGRepresentation(IMG!)!)
print("download")
imageArrayNsData.append(dtA)
indeX++
print(indeX)
}
self.view.userInteractionEnabled = true
myActivityIndicator.stopAnimating()
要异步执行,您将不得不使用 dispatch
。事实上,AlamofireImage
也使用 dispatch 来处理它。
在我看来,您可以将代码放在队列用户初始的调度中,并在 myActivityIndicator
和 self.view.userInteractionEnabled
完成后更新主队列
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.rawValue), 0)) {
//your download code here
dispatch_async(dispatch_get_main_queue()) {
self.view.userInteractionEnabled = true
myActivityIndicator.stopAnimating()
}
}
我正在尝试显示 UIActivityIndicator
图片开始下载的时间,它会一直显示,直到所有图片都下载完毕。
但是 UIActivityIndicator
不是动画,它是在所有图像都下载完后才动画。我发现 contentsOfURL
是同步方法并阻塞主线程。我想使用 contentsOfURL
下载图片。任何人都知道我如何在图像开始下载时制作动画 UIActivityIndicator
吗?
谢谢
var indeX = 0
var imageArrayNsData : [NSData] = []
var posts = NSMutableArray()
myActivityIndicator.startAnimating()
self.view.addSubview(myActivityIndicator)
self.view.userInteractionEnabled = false
for _ in posts.valueForKey("enclosure") as! [NSString]{
let picURL = self.posts.objectAtIndex(indeX).valueForKey("enclosure") as! String
let url = NSURL(string: picURL)
let data = NSData(contentsOfURL: url!)
let IMG = UIImage(data: data!)
let dtA : NSData = NSData(data: UIImagePNGRepresentation(IMG!)!)
print("download")
imageArrayNsData.append(dtA)
indeX++
print(indeX)
}
self.view.userInteractionEnabled = true
myActivityIndicator.stopAnimating()
要异步执行,您将不得不使用 dispatch
。事实上,AlamofireImage
也使用 dispatch 来处理它。
在我看来,您可以将代码放在队列用户初始的调度中,并在 myActivityIndicator
和 self.view.userInteractionEnabled
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.rawValue), 0)) {
//your download code here
dispatch_async(dispatch_get_main_queue()) {
self.view.userInteractionEnabled = true
myActivityIndicator.stopAnimating()
}
}