iOS - MPMediaItem显示默认图稿

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

我目前正在开发一款应用程序,显示您在音乐播放器中收听的艺术家,曲目和专辑封面。除了播放没有插图的歌曲,我希望能够显示自己的默认图像(而不是显示空白屏幕),所有这一切都进行得很顺利。

以下是我如何设想它应该工作,但它永远不会进入其他项目作品永远不会零!

_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"]; }

提问于
用户回答回答于

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"];
}

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

用户回答回答于

如果你只需检查是否存在图片(无需抓取图像,这会烧焦大量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);

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问5 回答
  • 无聊至极

    4 粉丝504 提问5 回答
  • 嗨喽你好

    7 粉丝480 提问4 回答
  • 富有想象力的人

    4 粉丝0 提问3 回答

扫码关注云+社区

领取腾讯云代金券