The UIImage
"image" is always empty ("null") though the cover is shown in the music app by apple.
in iOS 7 it works fine, but with iOS 8 I get no cover.
Whats wrong with my code, or what has changed in iOS 8?
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
AlbumCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AlbumCell"];
MPMediaItemCollection *song = self.songsList[indexPath.row];
cell.albumName.text = [[song representativeItem] valueForProperty: MPMediaItemPropertyAlbumTitle];
cell.albumArtist.text = [[song representativeItem] valueForProperty:MPMediaItemPropertyAlbumArtist];
CGSize artworkImageViewSize = CGSizeMake(100, 100);
MPMediaItemArtwork *artwork = [song valueForProperty:MPMediaItemPropertyArtwork];
UIImage *image = [artwork imageWithSize:artworkImageViewSize];
NSLog(@"-------------------");
NSLog(@"%@",[[song representativeItem] valueForProperty: MPMediaItemPropertyAlbumTitle]);
NSLog(@"%@",image);
if (artwork) {
cell.cover.image = image;
}
else
{
cell.cover.image = [UIImage imageNamed:@"nocover.png"];
}
return cell;
}
Your code looks fine. I have the same code for getting artwork and it's working for me on iOS 8. Are you SURE the item actually has artwork? Play that song in the music app - artwork?
i´ve found the problem.
it´s
the following works:
or
everything that can be divided by 3 works.
As of iOS 8,
MPMediaItem
's selectorimageWithSize:(CGSize)size
appears to not guarantee that it will return an image. If no image is returned at the requested size, call it again with the size of the artworkbounds
property: