iOS - MPMediaItem显示默认图稿

时间:2011-10-19 16:57:44

标签: ios ios5 mpmediaitem

我目前正在开发一款应用,可以显示您在音乐播放器中收听的艺术家,曲目和专辑封面。一切都很顺利,当我播放一首没有艺术品的歌曲时,我希望能够显示我自己的默认图像(而不是显示空白屏幕)。

以下是我的想象它应该如何工作,但它永远不会进入其他因为itemArtwork永远不会是零!

感谢您的帮助。

谢谢,Ben

_item = [_player nowPlayingItem];
MPMediaItemArtwork *itemArtwork = [_item valueForProperty:MPMediaItemPropertyArtwork];

if (itemArtwork != nil) {
    UIImage *albumArtworkImage = [itemArtwork imageWithSize:CGSizeMake(250.0, 250.0)];
    _albumArtImageView.image = albumArtworkImage;
} else { // no album artwork
    NSLog(@"No ALBUM ARTWORK");
    _albumArtImageView.image = [UIImage imageNamed:@"kol.jpg"];
}

2 个答案:

答案 0 :(得分:34)

MPMediaItemArtwork似乎总是存在,即使对于没有艺术作品的曲目也是如此。

我检测是否没有图像的方法是看MPMediaItemArtwork的imageWithSize是否返回NULL。

或者,重新调整你的代码:

_item = [_player nowPlayingItem];
UIImage *albumArtworkImage = NULL;
MPMediaItemArtwork *itemArtwork = [_item valueForProperty:MPMediaItemPropertyArtwork];

if (itemArtwork != nil) {
    albumArtworkImage = [itemArtwork imageWithSize:CGSizeMake(250.0, 250.0)];
}

if (albumArtworkImage) {
    _albumArtImageView.image = albumArtworkImage;
} else { // no album artwork
    NSLog(@"No ALBUM ARTWORK");
    _albumArtImageView.image = [UIImage imageNamed:@"kol.jpg"];
}

我希望此信息可以帮助您(如果是这样,请将此答案标记为已选中:-)

答案 1 :(得分:3)

如果您只需检查图稿是否存在(不可能抓取图像,这会占用大量CPU周期),您还可以检查itemArtwork.bounds属性。如果图稿不存在,则bounds.size.widthbounds.size.height属性将为0:

MPMediaItemArtwork *artwork = [_item valueForProperty:MPMediaItemPropertyArtwork];
BOOL hasArtwork = (artwork.bounds.size.width > 0 && artwork.bounds.size.height > 0);