2013-01-31 93 views
0

我想輸入MPMediaItemArtwork圖像到UITableView's單元格的ImageView中,並帶有以下代碼。如何在iOS中設置MediaItemArtwork圖像填充UITableViewCell?

MPMediaItemArtwork *artwork = [[[self.arrayOfAlbums objectAtIndex:indexPath.row] representativeItem]valueForProperty:MPMediaItemPropertyArtwork]; 
    UIImage *artworkImage = [artwork imageWithSize: cell.imageView.bounds.size]; 

if (artworkImage) 
    { 
     cell.imageView.image = artworkImage; 

    } 

    else 
    { 
     cell.imageView.image = [UIImage imageNamed: @"noArtwork.png"]; 
    } 

沒事的時候我在UITableView's細胞ImageView插入圖形圖像。

但是當我的作品圖像太小或太大時,就像下面的圖片發生了一樣。 未完全填充單元格的ImageView。

enter image description here

你看到了嗎?我想設置與Stretch填補像的iOS音樂應用

這裏是內建應用作品圖片那一套完全填補Stretch

enter image description here

我想要做這樣的。

所以我用cell.imageView.contentMode = UIViewContentModeScaleAspectFill;然而它沒有效果。

那麼我該怎麼做呢? 感謝您的工作。

回答

2

試試這個計算一個新的和適合的圖像; 將newRect調整爲您單元的矩形。

// scale and center the image 

CGSize sourceImageSize = [artworkImage size]; 

// The rectangle of the new image 
CGRect newRect; 
newRect = CGRectMake(0, 0, 40, 33); 

// Figure out a scaling ratio to make sure we maintain the same aspect ratio 
float ratio = MAX(newRect.size.width/sourceImageSize.width, newRect.size.height/sourceImageSize.height); 

UIGraphicsBeginImageContextWithOptions(newRect.size, NO, 1.0); 

// Center the image in the thumbnail rectangle 
CGRect projectRect; 
projectRect.size.width = ratio * sourceImageSize.width; 
projectRect.size.height = ratio * sourceImageSize.height; 
projectRect.origin.x = (newRect.size.width - projectRect.size.width)/2.0; 
projectRect.origin.y = (newRect.size.height - projectRect.size.height)/2.0; 

[sourceImage drawInRect:projectRect]; 
UIImage *sizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

cell.imageView.image = sizedImage; 
+0

sourceImage是什麼兄弟?我的作品圖片? –

+0

是的,正確的。忘記了。 – SAE

+0

Thz爲你的答案bro.That是完美的:) –

1

UIImage *artworkImage = [artwork imageWithSize: cell.imageView.bounds.size]; 

創建與小區的大小的圖像。所以,它在這條線上縮放,圖像不會比單元大,因此它不會隨後縮放。

我會將圖像保留爲原始尺寸或尺寸爲單元格大小的2倍,並將比例縮放至contentMode

CGSize newSize = CGSizeMake(artwork.bounds.size.width, artwork.bounds.size.height) 
UIImage *artworkImage = [artwork imageWithSize: newSize]; 
+0

thz。但是當我的作品圖片很大時。它伸展得太多了。我該怎麼做?我想做相同尺寸的作品圖片。 –

+0

我不明白,你的意思。什麼大小相同?什麼意思是「延伸太多」? – SAE

+0

哦對不起。我的意思是,當我用你的代碼寫作時,一些作品太大了,甚至延伸到了細胞的中心。我的意思是,即使我的作品太大,我也想縮小尺寸,就像iOS內置應用程序一樣。請檢查iOS音樂應用程序的相冊。它顯示的尺寸完全相同。甚至沒有超出cell.imageView的大小。像那樣的兄弟,我該怎麼做? –