Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 无法从MPMediaItemPropertyNetwork获取UIImage_Iphone_Sdk_Uiimage_Ipod_Mpmediaitem - Fatal编程技术网

Iphone 无法从MPMediaItemPropertyNetwork获取UIImage

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

我有以下代码从MPMediaItemPropertyNetwork获取UIImage,以在我的视图中显示coverArt。我从mediaItem中获得一个非空的artwork,但是,当我尝试从artwork中提取UIImage时,它返回NULL,并且我在UIImageView中看不到任何内容。任何帮助都将不胜感激

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行。