私は、30セルのコレクションビューで構成されるアプリを持っています。そのセルはイメージとラベルで構成されています。私の問題は、そのイメージをロードすると、私のメモリ使用量は87Mbになります。しかし、私がそのイメージを設定しなかった場合、私のメモリ使用量はわずか30Mbです。コレクションビューでメモリ使用量を減らす方法は?
私はMoaを使用して画像を非同期にロードしています。そして、ここに私の細胞のinitです:
import UIKit
import moa
class ProductListItemCell: UICollectionViewCell {
@IBOutlet var imgProductItem: UIImageView!
@IBOutlet var titlleProductList: UILabel!
@IBOutlet var priceProductList: UILabel!
@IBOutlet var boldPriceProductList: UILabel!
func updateContent(product: Item) {
// if let imgUrl = product.picUrl {
// self.imgProductItem.moa.url = "http:\(imgUrl)"
// }
if let title = product.title {
self.titlleProductList.text = title
}
if let price = product.priceTag {
self.priceProductList.setStrikethrough(price)
}
if let boldPrice = product.price {
self.boldPriceProductList.text = boldPrice
}
}
}
そして、ここでは私のcellForItemAtIndexPath
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if collectionView == myItemsCollectionView {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("firstCell", forIndexPath: indexPath) as! myCollectionViewCell
cell.updateContent(self.myItems.items[indexPath.item])
return cell
}
else {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("othersCell", forIndexPath: indexPath) as! myCollectionViewCell
cell.updateContent(others[indexPath.section].items[indexPath.item])
return cell
}
}
ある画像をダウンロードし、それを「圧縮」する方法はありますか?または私はそれを間違っているのですか? Plsは私に知らせる。この時点で1週間は固まってしまった。
注:私のアプリのようなコレクションビューを持ついくつかのアプリケーションでは、いくつのメモリが標準で使用されていますか? 30Mbは "high"に属していますか?私はメモリ管理の初心者です。
ありがとうございました。
これはライブラリ** Moa **あなたが言及するかどうかは分かりませんメモリキャッシュはデフォルトでどれくらいの頻度で使用されますか。プロジェクトページでこれについて最初に学ぶ必要があります。それにもかかわらず、私はあなたが画像をダウンロードするためにライブラリを使用する理由と、Kingfisherのような、あなたのために細胞の再利用可能性を扱うものを使用しようとする場合は分かりません。 –
画像の寸法は何ですか?また、セル内の画像ビューの寸法は何ですか?イメージは、イメージビューの次元(時間、もちろん、デバイスの 'スケール ')よりも大きくすべきではありません。それより大きい場合は、イメージのサイズを変更して一致させることをお勧めします。 – Rob
FYIでは、画像に必要なランタイムメモリは、一般に4 x 'width' x' height'(画像ビューのサイズに関係なく、画像のサイズです)です。 – Rob