我实现了一个表视图,但滚动是滞后的。为什么会滞后?我正在重复使用电池,但它仍然滞后。当我滚动时,内存会出现峰值并在滚动停止时恢复正常。如果有任何用处,我在表格视图单元格中实现了一个集合视图。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: BoxCell = table.dequeueReusableCellWithIdentifier("CELL", forIndexPath: indexPath) as! BoxCell
cell.pic.image = pic[indexPath.row].circle
return cell
}
extension UIImage {
var circle: UIImage? {
let square = CGSize(width: min(size.width, size.height), height: min(size.width, size.height))
let imageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: square))
imageView.contentMode = .ScaleAspectFill
imageView.image = self
imageView.layer.cornerRadius = square.width/2
imageView.layer.masksToBounds = true
UIGraphicsBeginImageContext(imageView.bounds.size)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
imageView.layer.renderInContext(context)
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return result
}
}
答案 0 :(得分:0)
你的影像有多大?如果他们是大图像表会减速。我最近遇到过这个问题。使用较小的图像使其再次更快。
答案 1 :(得分:0)
在这个单元格中发生了很多事情,可能会降低其资源。例如,每次滚动表视图时都会重新加载集合视图。 “cell.collectionview.reloadData()”。也许获取单元格的内容并在Awake From Nib自定义单元格中加载一次,而不是每次滚动表格视图时调用每个单元格的所有操作符,图像和坐标。内存是尖峰,因为每次滚动时,无论多大,都会重新加载集合视图。一切都在主线程上处理。也许将一些图像布局代码移动到后台线程以获得更平滑的滚动操作。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
//Image work here (including image if statement)
})
理想情况下,将图像加载从nib唤醒,以便加载一次。