【问题标题】:MPMediaItemPropertyArtwork not displaying in UIImageView (iOS 8) with other MPMediaItems not updatingMPMediaItemPropertyArtwork 未在 UIImageView (iOS 8) 中显示,其他 MPMediaItems 未更新
【发布时间】: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 查找示例,并将其替换为systemMusicPlayerstackoverflow.com/questions/25788671/…(并更改您收听的通知,但您将了解它是如何工作的)。

标签: ios objective-c uiimageview ios8 mpmediaitem


【解决方案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的答复

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多