Swift慢收集查看
问题描述:
我有一个收集视图,拍摄我已经存储并显示它们的图像。但是,当我运行它时,会出现内存错误和非常慢/延迟的显示。这里是我的代码:Swift慢收集查看
var players = ["1", "2", "3", "4", "5", "10", "11", "12", "13", "15", "20", "22", "24", "25", "31", "31", "33", "34"]
@IBOutlet weak var collectionView: UICollectionView!
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 17
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("MyCell", forIndexPath: indexPath) as HomeCollectionViewCell
cell.imageViewTwo.image = UIImage(named: "\(players[indexPath.row])")
return cell
}
有没有更容易的方法来做到这一点,我失踪了?
答
你应该使用仪器来确定它是什么慢。这就是它的目的!
不过,我要去猜测,这条线就是问题所在:
cell.imageViewTwo.image = UIImage(named: "\(players[indexPath.row])")
如果这些图像是大的,两个坏的事情会发生:它需要时间来打开每个之一,你是在浪费内存,因为显示的图像比加载的图像小得多。当您滚动时,发生这种情况。正因如此,您在cellForItemAtIndexPath:
中所做的一切都需要非常快速。那么,你的实现显然不是很快。
你有两个选择 - 其实,你可以同时使用:
准备更好的图像。使用
png
并以显示所需的实际尺寸使用它们。使用惰性图像加载,以便在后台线程中加载图像,并且不会减慢滚动速度。
什么部分很慢?第一次加载视图?滚动? – dpassage 2014-12-04 04:01:29
滚动。我压缩了图像,现在看起来效果更好,但我依然觉得这是一个解决方案 – 2014-12-04 04:02:44