UIImageView ve UILabel'den oluşan özel bir UITableViewCell var. Hücre 320x104 pikseldir ve imageView, ön taraftaki etiketle tüm alanı kaplar. Sadece 8 hücre var.Özel UITImaViewCell büyük UIImageView ile kaydırma gecikmesine neden oluyor
ViewDidLoad İçinde tüm gerekli görüntüleri ön tarafa oluşturuyorum ve bunları bir sözlükte doğru boyutlarda önbelleğe alıyorum.
UITableView öğesini kaydırdığımda, yeni bir hücre her karşılaşıldığında fark edilebilir bir gecikme var. Bu, benim kullandığım görüntü zaten oluşturulduğu ve önbelleğe alındığı için hiçbir anlam ifade etmiyor. Hücreyi istediğim her şey, UIImageView görüntüsünü görüntüyü oluşturmak içindir.
Bir xib onun manzaralı bir özel hücre kullanarak ve bunu kullanmak benim UITableView yapılandırarak ediyorum:
[self.tableView registerNib: [UINib nibWithNibName: "ActsCell" paket @: nil] forCellReuseIdentifier: myIdentifier];
Hücre oluşturma ve yapılandırma:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString* reuseIdentifier = @"ActsCell";
ActsCell* cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
// Configure the cell...
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (void)configureCell:(ActsCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
Act* act = [self.acts objectAtIndex:indexPath.row];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.title.text = act.name;
cell.imageView.image = [self.imageCache objectForKey:act.uid];
}
gecikmeye neden ne olabilir? Zaman yoğun bir çalışma yapıldığından Async'in hiçbir şey yapmaya çalışmasında hiçbir yararı yok gibi görünüyor.
İki şey düşünebilirim. Bir tanesi, "reusableIdentifier" ı doğru şekilde ayarlamamanız nedeniyle dequeueing'in başarısız olmasıdır. Diğeri, görüntülerin boyutudur. Görüntüler yüklendiyse de, CG görüntü vermeden önce görüntü verisini işlemeye ihtiyaç duyar, bu da ölçekleme, birleştirme vb. Gibi maliyetli işlemleri içerebilir. – Lvsti
@Lvsti Yeniden kullanıcı tanımlayıcıyı doğru şekilde ayarlamadığımı nasıl detaylandırabilir misiniz? – Undistraction
Eğer o, dequeueing yaparken ben if (hücreyi == nil) kullanmayın demek durumunda aksi takdirde {// hücreyi Oluştur} ... geri – Lvsti