Не удалось получить UIImage из MPMediaItemPropertyArtWork - PullRequest
4 голосов
/ 07 июля 2011

У меня есть следующий код, чтобы получить UIImage из MPMediaItemPropertyArtWork для отображения coverArt в моем представлении.Я получаю обложку, отличную от NULL, от mediaItem, однако, когда я пытаюсь извлечь 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;

Ответы [ 5 ]

3 голосов
/ 26 июля 2011

Попробуйте с этим - используйте 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

1 голос
/ 08 августа 2014

Я знаю, что этот вопрос уже устарел, но для любого, кто его найдет, это может помочь:

Я несколько часов ломал голову над этим, потому что получение обложки работало в одном контроллере представления в моем приложении, а не в UITableViewController. Мой код выглядел абсолютно одинаково в обоих случаях (и очень похож на ваш) за исключением ОДНОЙ вещи:

let albumArtImage = albumArt.imageWithSize(cell.imageView.bounds.size)

РАЗМЕР! (Извините за написание этого в Swift, но вы поняли идею). Звучит глупо, но MPMediaItemArtwork отказалась дать мне маленькое изображение. Я буквально просто изменил его на больший размер, например:

let albumArtImage = albumArt.imageWithSize(CGSize(width: 150, height: 150))

и это сработало. В любом случае вы можете изменить размер UIImage в соответствии с вашими потребностями.

Если кто-то сочтет это и это (глупое) решение работоспособным, пожалуйста, сообщите мне об этом через ответ или что-то в этом роде.

1 голос
/ 20 июля 2014

попробуйте это ... это работа.

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;
0 голосов
/ 02 марта 2016

См. Ответ: https://stackoverflow.com/a/26463261/883413

Похоже, это ошибка iOS.Если возвращаемое изображение равно нулю, попробуйте использовать размер рисунка.

UIImage *image = [artwork imageWithSize:size];
if (image == nil) {
    image = [artwork imageWithSize:artwork.bounds.size];
}
0 голосов
/ 05 января 2012

Как вы инициализируете свой MPMusicPlayerController?Должно быть:

MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer];
...