在表格视图单元格中显示活动指示器
Posted
技术标签:
【中文标题】在表格视图单元格中显示活动指示器【英文标题】:Display Activity Indicator in tableview cell 【发布时间】:2016-11-09 21:16:00 【问题描述】:我正在一个基本的 tableview 单元格中加载不同的图像,并希望在加载图像时在单元格中显示活动指示器。我正在使用一个单独的单元格文件,例如示例代码。我知道将代码放在哪里,只是不确定语法。我找到了一些将代码放入视图但不是专门放入单元格的方法。有人有想法吗?谢谢。
func configureCell(favorite: Article)
self.favorite = favorite
downloadImage(NSURL(string: self.favorite.mainImage)!)
func downloadImage(url: NSURL, type: String)
getDataFromUrl(url) (data, response, error) in
//show activity indicator
dispatch_async(dispatch_get_main_queue()) () -> Void in
guard let data = data where error == nil else return
self.mainImage.image = UIImage(data: data)
func getDataFromUrl(url: NSURL, completion: ((data: NSData?, response: NSURLResponse?, error: NSError?) -> Void))
NSURLSession.sharedSession().dataTaskWithURL(url) (data, response, error) in
completion(data: data, response: response, error: error)
.resume()
【问题讨论】:
【参考方案1】:你可以像下面这样,让我知道这是否适合你,你可以根据你的要求修改frame
。
func downloadImage(url: NSURL, type: String)
let activityIndicator = UIActivityIndicatorView()
activityIndicator.frame = self.mainImage.bounds
getDataFromUrl(url) (data, response, error) in
//show activity indicator
self.mainImage.addSubview(activityIndicator)
activityIndicator.startAnimating()
dispatch_async(dispatch_get_main_queue()) () -> Void in
guard let data = data where error == nil else return
activityIndicator.stopAnimating()
activityIndicator.removeFromSuperview()
self.mainImage.image = UIImage(data: data)
【讨论】:
感谢您的快速回复,这是有效的!它只是没有定位在中心位置,它向下和向右,但它正在出现。我还必须将 self.mainImage.addSubview(activityIndicator) 和 activityIndicator.startAnimating() 移到 getDataFromUrl 函数上方。 我似乎无法正确居中你知道怎么做吗?我已经尝试过了,但它并不完全正确:activityIndicator.frame = CGRect(x: 0, y: 0, width: self.mainImage.bounds.width / 2, height: self.mainImage.bounds.height / 2) 您的 x,y 位置不正确,您需要将其相对于超级视图居中 啊,谢谢。这似乎工作得很好:activityIndicator.frame = CGRect(x: self.superview!.frame.width / 2, y: 60, width: 0, height: 0) 您好像是在数据下载后添加指标。您可能需要指示正在下载图像,在这种情况下,您应该在调用 getDataFromURL 之前添加指示符。以上是关于在表格视图单元格中显示活动指示器的主要内容,如果未能解决你的问题,请参考以下文章