MPMediaItemPropertyArtwork 未在 UIImageView (iOS 8) 中显示,其他 MPMediaItems 未更新

Posted

技术标签:

【中文标题】MPMediaItemPropertyArtwork 未在 UIImageView (iOS 8) 中显示,其他 MPMediaItems 未更新【英文标题】:MPMediaItemPropertyArtwork not displaying in UIImageView (iOS 8) with other MPMediaItems not updating 【发布时间】:2014-10-02 13:32:15 【问题描述】:

当尝试使用MPMediaItemPropertyArtwork 抓取和显示歌曲封面/艺术作品时,它们无法在我的UIImageView 中显示。此外,由于其他 MPMediaItems 显示艺术家姓名和歌曲名称,它们不会在歌曲更改时更新。

这是我的 .h 文件:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *songtitle;
@property (weak, nonatomic) IBOutlet UILabel *songartist;
@property (weak, nonatomic) IBOutlet UILabel *nowplaying;
@property (weak, nonatomic) IBOutlet UIImageView *songalbumart;


@end

这是我的 .m 文件的一部分,其内容为 MPMusicPlayerController

MPMusicPlayerController *player = [MPMusicPlayerController systemMusicPlayer];

MPMediaItem *item = [player nowPlayingItem];

NSString *songtitlestring = [item valueForProperty:MPMediaItemPropertyTitle];
NSString *songartiststring = [item valueForProperty:MPMediaItemPropertyArtist];
NSString *nowplayingstring = [NSString stringWithFormat:@"#NowPlaying %@ by %@, via @TweetPlaying", songtitlestring, songartiststring];

self.songalbumart = [item valueForProperty:MPMediaItemPropertyArtwork];

self.songtitle.text = songtitlestring;
self.songartist.text = songartiststring;
self.nowplaying.text = nowplayingstring;

任何人都知道如何解决以下问题:

MPMediaItemPropertyArtwork 未显示(IBOutlet 已连接!) 当用户更改歌曲时,UILabels 的 MPMediaItems 显示艺术家姓名和歌曲名称不会更新

我正在为 ios 8 开发,并在那里使用 MPMusicPlayerController's systemMusicPlayer,因为 iPodMusicPlayer 已被贬值。

任何帮助将不胜感激!

编辑:所以我必须使用MPMusicPlayerControllerPlaybackStateDidChangeNotification,任何人都可以为我的情况提供一个例子吗?

【问题讨论】:

[self.songalbumart setImage:[[item valueForProperty:MPMediaItemPropertyArtwork] imageWithSize:CGSizeMake(songalbumart.frame.size.width, songalbumart.frame.size.height)]; ?你说信息没有更新,但是当音乐改变时你会听吗? @Larme 我正在使用 IBOutlet 将 MKMediaPropertyArtwork 链接到我的 Storyboard 上的 UIImageView,但该代码仍然有效吗?不,当音乐改变时应用程序没有在听,你能提供解决方案吗? 我觉得你还是可以用`MPMusicPlayerControllerNowPlayingItemDidChangeNotification`网上应该有例子吧。 @Larme 你能提供一些我喜欢的东西吗?找不到与我的情况完全相关的任何内容。 使用iPodMusicPlayer 查找示例,并将其替换为systemMusicPlayer。 ***.com/questions/25788671/…(并更改您收听的通知,但您将了解它是如何工作的)。 【参考方案1】:

以下代码对我有用。

MPMediaItemArtwork *artwork = [mediaItem valueForProperty: MPMediaItemPropertyArtwork];
UIImage *artworkImage = [artwork imageWithSize: albumImageView.bounds.size];

if (artworkImage) 
    albumImageView.image = artworkImage;
 else 
    albumImageView.image = [UIImage imageNamed: @"noArtwork.png"];

得到this link的答复

【讨论】:

以上是关于MPMediaItemPropertyArtwork 未在 UIImageView (iOS 8) 中显示,其他 MPMediaItems 未更新的主要内容,如果未能解决你的问题,请参考以下文章