2012-08-07 21 views
7

URL'den görüntüleri bir uiimage'e yükleyin ve ardından bu görüntüleri, aşağıdaki kod gibi bir uitableviewcell uiimageview öğesine ekleyin. Görüntü boyutlarını bilmiyorum, ancak tabloviewcell görüntüsünde onları 40x40 olmaya zorlamam gerekiyor. Görüntüler, uitableview'de farklı genişlikler ile yüklenmeye devam ediyor.UIImage, UIImage URL'den yüklendiğinde UITableViewCell'de UIImageView Boyutunu Ayarla?

Uiimage boyutlandırma/ölçeklendirme ile ilgili diğer yazılardan okuyun, ancak bu çözümler benim için çalışmaz. Düşünüyorum çünkü uitableviewcell'deki uiimageview'i kullanıyorum ve kendi uiimageview'imi yaratıyorum.

İşte, (hem aspectfill ve boy uyum çalıştı) içerik modunu ayarlama denedim

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

UITableViewCell *cell = [[UITableViewCell alloc] init]; 

ItemForSale *item = [listOfItems objectAtIndex:indexPath.row]; 
cell.textLabel.text = item.name; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
cell.textLabel.font = [UIFont systemFontOfSize:14]; 

NSURL *url = [NSURL URLWithString: item.imgPath]; 
UIImage *thumbnail = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]]; 
if (thumbnail == nil) { 
    thumbnail = [UIImage imageNamed:@"noimage.png"] ; 
} 
cell.imageView.image = thumbnail; 
cell.imageView.contentMode = UIViewContentModeScaleAspectFill; 
cell.imageView.frame = CGRectMake(0, 0, 40, 40); 
cell.imageView.autoresizingMask = UIViewAutoresizingNone; 
cell.imageView.clipsToBounds = YES; 

return cell; 

} 

> kod, clipTobound autoresizingmask ayarı, çerçeve sıfırlamayı denedim. Hiçbiri bir şeyi değiştirmedi.

+0

Bunu özel bir uiimageview ile denedim ve iyi çalışıyor. Uitableviewcell – Augie

cevap

22

bulundu "LazyTableImages"

NSURL *url = [NSURL URLWithString: item.imgPath]; 
UIImage *thumbnail = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]]; 
if (thumbnail == nil) { 
    thumbnail = [UIImage imageNamed:@"noimage.png"] ; 
} 
CGSize itemSize = CGSizeMake(40, 40); 
UIGraphicsBeginImageContext(itemSize); 
CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height); 
[thumbnail drawInRect:imageRect]; 
cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return cell; 
+0

dahil uimageview ile bir şey olmalı, denedim, ama "kendi cevabınızı kabul etmek için 2 gün beklemeniz gerekir" bir mesaj alın. – Augie

+0

Hangi sınıfa hangi mesajı koymuyorsunuz? Bu UITableView veya UITableViewCell alt sınıfınızda mı? Yukarıdaki kod, –

+1

kodunun 'tableView: cellForRowAtIndexPath:' içerisindeydi, ancak daha sonra kodumun 'dev tablo görüntüleri' örneğinde bulunan 'tembel tablo görüntüleri' örneğini taklit etmesi için 'tableView: cellForRowAtIndexPath:' 've sonra görüntüyü bir uiimage kaydedin ve tamamlandıktan sonra, cell.imageView içine koymak için ana konuya uiimage döndürün. Sanırım icondownloader, örnek projede arka planda çalışan nesnenin adıydı. – Augie

1

Ben aynı sorunu vardı ve bu benim için mükemmel çalıştı Elmalar örnek proje bakarak cevap;

UIImage seçin ve nitelikleri müfettişi gidin ve resmin boyutu için ayarlanmış kısıtlamaları emin olun

"subviews Klip" seçeneğini işaretleyin.