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 未更新的主要内容,如果未能解决你的问题,请参考以下文章