我创建了一个UITableView来显示来自Instagram的特定照片的Feed。我做了一个自定义tableViewCell来显示图像,标题包含用户名。一切都显示正确,但当我滚动它时相当滞后。 我已经阅读了有关heightForRowAtIndexPath的其他帖子,而不是设置tableView.rowHeight,并且已经正确完成,这减少了一些延迟。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//Screen Width & Height
let screenSize: CGRect = UIScreen.mainScreen().bounds; let screenWidth = screenSize.width;
let screenHeight = screenSize.height;
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("feedCell") as UITableViewCell
let url = NSURL(string: mediaArray[indexPath.section])
let data = NSData(contentsOfURL: url!)
var cellImageName = UIImage(data: data!)
var cellImage = cellImageName
var cellImageView = UIImageView(image: cellImage)
cellImageView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenWidth)
cell.addSubview(cellImageView)
//cell.imageView?.image = UIImage(data: data!)
return cell
}
有谁知道如何解决问题?感谢
编辑:我在后台线程上下载了let data = NSData(contentsOfURL: url!)
,其余的在主线程上。
let url = NSURL(string: mediaArray[indexPath.section])
let priority = DISPATCH_QUEUE_PRIORITY_HIGH
dispatch_async(dispatch_get_global_queue(priority, 0)) {
//IMAGE
let data = NSData(contentsOfURL: url!)
var cellImage = UIImage(data: data!)
var cellImageView = UIImageView(image: nil)
dispatch_async(dispatch_get_main_queue()) {
if (cell.viewWithTag(1) == nil) {
cellImageView.tag = 1
var cellImage = UIImage(data: data!)
var cellImageView = UIImageView(image: cellImage)
cellImageView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenWidth)
cell.addSubview(cellImageView)
}
}
我还有一个问题,即Feed重新使用相同的单元格。有什么想法吗?