我正在做cs193p斯坦福课程的作业4,Smashtag。 该程序只是从Twitter获取信息并将其呈现在TableView上。我使用ImageViewCell获取URL并从NSData(url)呈现UIImage。并且微调器指示器运行良好,但是当它停止动画时,它确实消失但图像不会显示,除非我触摸屏幕或拖动它以给它踢。踢完后会立即出现图像。为了保持主线程的流畅性,我必须使用异步来远离阻塞主线程,这是什么原因?
import UIKit
class ImageTableViewCell: UITableViewCell {
@IBOutlet weak var imageLabel: UIImageView! {
didSet {
if photo != nil {
imageLabel?.image = photo
}
}
}
var photoURL: NSURL? {
didSet{
spinner.startAnimating()
if let url = photoURL {
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) {
let data = NSData(contentsOfURL: url)
dispatch_async(dispatch_get_main_queue()) {
self.spinner.stopAnimating()
if data != nil && url == self.photoURL {
self.photo = UIImage(data: data!)
}
}
}
}
}
}
var photo: UIImage?{
didSet{
if photo != nil {
imageLabel.image = photo
}
}
}
@IBOutlet weak var spinner: UIActivityIndicatorView!
}
它让我很困惑....感谢您的帮助! !