我目前正在开发一款应用,可以显示您在音乐播放器中收听的艺术家,曲目和专辑封面。一切都很顺利,当我播放一首没有艺术品的歌曲时,我希望能够显示我自己的默认图像(而不是显示空白屏幕)。
以下是我的想象它应该如何工作,但它永远不会进入其他因为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"];
}
答案 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.width
和bounds.size.height
属性将为0:
MPMediaItemArtwork *artwork = [_item valueForProperty:MPMediaItemPropertyArtwork];
BOOL hasArtwork = (artwork.bounds.size.width > 0 && artwork.bounds.size.height > 0);