-1
我有一個tableView
,它顯示了用戶音樂庫中播放列表的列表。我用來獲取此列表中的代碼是:所有的tableView單元格顯示相同作品的圖像播放列表的圖片
@implementation playlistsViewController
{
NSArray *playlists;
MPMediaQuery *playlistsQuery;
}
- (void)viewDidLoad
{
self.title = @"Playlists";
playlistsQuery = [MPMediaQuery playlistsQuery];
playlists = [playlistsQuery collections];
}
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [playlists count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ ....
// Configure the cell...
MPMediaItem *rowItem = [playlists objectAtIndex:indexPath.row];
cell.textLabel.text = [rowItem valueForProperty: MPMediaPlaylistPropertyName];
cell.imageView.image = [self getAlbumArtworkWithSize:(CGSizeMake(44,44))];
return cell;
}
然後我有getAlbumArtworkWithSize
:
- (UIImage *) getAlbumArtworkWithSize: (CGSize) albumSize
{
// IMAGE
MPMediaQuery *playlistQuery = [MPMediaQuery playlistsQuery];
MPMediaPropertyPredicate *playlistPredicate = [MPMediaPropertyPredicate predicateWithValue: playlistTitle forProperty: MPMediaPlaylistPropertyName];
[playlistQuery addFilterPredicate:playlistPredicate];
for (MPMediaPlaylist *playlist in playlists) {
NSLog (@"%@", [playlist valueForProperty: MPMediaPlaylistPropertyName]);
NSArray *songs = [playlist items];
for (int i = 0; i < [songs count]; i++) {
MPMediaItem *mediaItem = [songs objectAtIndex:i];
UIImage *artworkImage;
MPMediaItemArtwork *artwork = [mediaItem valueForProperty: MPMediaItemPropertyArtwork];
tempImage = [artwork imageWithSize: CGSizeMake (1, 1)];
if (tempImage) {
tempImage = [artwork imageWithSize:albumSize];
playlistImage = artworkImage;
return artworkImage;
}
}
}
return [UIImage imageNamed:@"Songs.png"];
}
這段代碼的含義:它循環通過播放列表中的所有歌曲,直到它找到與專輯中的歌曲藝術品,因爲一些歌曲沒有任何藝術作品。然後它返回該圖像。
然而,這僅返回我的表爲相同圖形圖像的所有細胞。我如何運行getAlbumArtworkWithSize
爲每個表格視圖單元格(播放列表名稱)?
這是我目前得到:
This is what I currently get IMAGE http://i58.tinypic.com/29lxmjs.jpg。
感謝您的幫助。爲什麼我的原始方法在較大的播放列表中慢一些,如果它只是查找具有專輯封面的第一首歌曲?播放列表的前10個歌曲中肯定會有一首歌曲,不是嗎?只是好奇:) 另外,我使用了第二種更有效的方法,但是它並沒有爲我的所有播放列表返回代表性圖像,儘管他們擁有擁有專輯封面的歌曲。例如。儘管播放列表中有專輯封面,但排名前25位的播放次數最多 - [我的應用](http://i62.tinypic.com/15mk6rc.jpg)(請參閱[音樂應用](http://i62.tinypic.com/2zfny1y.png ))。 – user3127576