Iphone 无法从MPMediaItemPropertyNetwork获取UIImage
我有以下代码从MPMediaItemPropertyNetwork获取UIImage,以在我的视图中显示coverArt。我从mediaItem中获得一个非空的artwork,但是,当我尝试从artwork中提取UIImage时,它返回NULL,并且我在UIImageView中看不到任何内容。任何帮助都将不胜感激Iphone 无法从MPMediaItemPropertyNetwork获取UIImage,iphone,sdk,uiimage,ipod,mpmediaitem,Iphone,Sdk,Uiimage,Ipod,Mpmediaitem,我有以下代码从MPMediaItemPropertyNetwork获取UIImage,以在我的视图中显示coverArt。我从mediaItem中获得一个非空的artwork,但是,当我尝试从artwork中提取UIImage时,它返回NULL,并且我在UIImageView中看不到任何内容。任何帮助都将不胜感激 CGSize artworkSize = CGSizeMake(30, 30); UIImage *artworkImage; MPMediaItemArtwork *artwork
CGSize artworkSize = CGSizeMake(30, 30);
UIImage *artworkImage;
MPMediaItemArtwork *artwork = [song valueForProperty: MPMediaItemPropertyArtwork];
if (artwork) {
NSLog(@"artwork available");
artworkImage = [artwork imageWithSize:artworkSize];
} else {
NSLog(@"artwork not available");
artworkImage = [UIImage imageNamed:@"EmptyAlbum.png"];
}
NSLog(@"artworkImage = %@", artworkImage);
coverArtView.image = artworkImage;
尝试使用此功能-使用UItableview显示相册详细信息 声明MPMediaItemCollection*userMediaCollection
-(void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
[self setUserMediaCollection:mediaItemCollection];
[self dismissModalViewControllerAnimated:YES];
}
MPMediaItem *mItem = (MPMediaItem *)[userMediaCollection.items objectAtIndex:indexPath.row];
MPMediaItemArtwork *artWork = [mItem valueForProperty:MPMediaItemPropertyArtwork];
cell.imageView.image = [artWork imageWithSize:CGSizeMake(30, 30)];
其中userMediaCollection是您的MPMediaItemCollection如何初始化MPMusicLayerController?应该是:
MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer];
试试这个。。。这是工作
CGSize artworkSize = CGSizeMake(30, 30);
UIImage *artworkImage;
MPMediaItemArtwork *artwork = [song valueForProperty: MPMediaItemPropertyArtwork];
artworkImage = [artwork imageWithSize:artworkSize];
if (artworkImage == nil) {
NSLog(@"artwork not available");
artworkImage = [UIImage imageNamed:@"EmptyAlbum.png"];
}
coverArtView.image = artworkImage;
我知道这个问题现在已经有点老了,但对于任何发现这个问题的人来说,这可能会有所帮助: 我为此挠头了好几个小时,因为在我的应用程序中的一个视图控制器中获取艺术品是可行的,但在我的UITableViewController中却不行。我的代码在这两种情况下看起来完全相同,除了一件事外,与您的代码非常相似:
let albumArtImage = albumArt.imageWithSize(cell.imageView.bounds.size)
大小!很抱歉用Swift写这封信,但你明白了。这听起来很愚蠢,但MPMediaItemArtwork拒绝给我一个小图像。我真的把它改大了,就像这样:
let albumArtImage = albumArt.imageWithSize(CGSize(width: 150, height: 150))
它成功了。您可以调整UIImage的大小,以满足以后的需要
如果有人发现这个愚蠢的解决方案有效,请通过回复或其他方式告诉我。请参阅答案:
似乎是一个iOS错误。如果返回的图像为零,请尝试使用艺术品大小
UIImage *image = [artwork imageWithSize:size];
if (image == nil) {
image = [artwork imageWithSize:artwork.bounds.size];
}
谢谢你,卡提基恩。但我看不出你的代码与我发布的代码有什么不同。事实上是一样的。我看到的问题是,这段代码在与iTunes同步转帐购买后可以完美工作,但在同步之前不行。如果我从iPhone上从iTunes上购买一首歌曲,然后启动我的应用程序,则此代码不会显示任何图像。但是,如果我与iTunes同步,同样也可以。我不确定同步时会发生什么变化。我看到的是,代码在我的iPad上有效,但在我的iPhone上无效。你找到解决方案了吗?我也注意到了可能的重复。你也应该提交一份雷达文件,因为这看起来像是一个iOS 8错误。你是怎么得到albumArt的?它是MPMediaItemArtwork吗?参见原始问题中的第3行。