在表格视图单元格中显示活动指示器

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(activityIndi​​cator) 和 activityIndi​​cator.startAnimating() 移到 getDataFromUrl 函数上方。 我似乎无法正确居中你知道怎么做吗?我已经尝试过了,但它并不完全正确:activityIndi​​cator.frame = CGRect(x: 0, y: 0, width: self.mainImage.bounds.width / 2, height: self.mainImage.bounds.height / 2) 您的 x,y 位置不正确,您需要将其相对于超级视图居中 啊,谢谢。这似乎工作得很好:activityIndi​​cator.frame = CGRect(x: self.superview!.frame.width / 2, y: 60, width: 0, height: 0) 您好像是在数据下载后添加指标。您可能需要指示正在下载图像,在这种情况下,您应该在调用 getDataFromURL 之前添加指示符。

以上是关于在表格视图单元格中显示活动指示器的主要内容,如果未能解决你的问题,请参考以下文章

检查表格视图单元格中的部分索引标题

表格视图单元格中的图像

在表格视图单元格中以编程方式显示图像

在 ios 的表格视图单元格中显示图像

在表格视图单元格中滑动后显示多个数据

表格视图不显示单元格中的内容