나는 사용자의 음악 라이브러리에있는 재생 목록 목록을 보여주는 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) ([music app] (http://i62.tinypic.com/2zfny1y.png 참조))). – user3127576