iOS:从iPod库获取和显示专辑封面

时间:2013-08-25 08:49:39

标签: ios mpmediaitem

我想从iPod库中的有声读物中获取专辑封面,但我不明白如何使用MPMediaItemPropertyArtwork

- (NSArray *)audiobooks
{
    MPMediaPropertyPredicate *abPredicate =
    [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeAudioBook]
                                     forProperty:MPMediaItemPropertyMediaType];

    MPMediaQuery *abQuery = [[MPMediaQuery alloc] init];
    [abQuery addFilterPredicate:abPredicate];
    [abQuery setGroupingType:MPMediaGroupingAlbum];
    NSArray *books = [abQuery collections];
    return books;
}

- (MPMediaItem *)mediaItemForRow: (NSInteger)row
{
    NSArray *audiobooks = self.audiobooks;
    MPMediaItem *mediaItem = nil;

    for (id object in audiobooks) {
        if ([object isKindOfClass:[MPMediaItemCollection class]]) {
            MPMediaItemCollection *book = (MPMediaItemCollection *)object;

            id item = [book items][row];
            if ([item isKindOfClass:[MPMediaItem class]]) {
                mediaItem = (MPMediaItem *)item;

            }
        }
    }
    return mediaItem;
}

所以现在我可以获得这样的媒体项目的标题:

NSString *title = [mediaItem valueForProperty:MPMediaItemPropertyArtist];

但是如何获得艺术作品以便我可以在UIImage中显示它?有这个属性:

[mediaItem valueForProperty:MPMediaItemPropertyArtwork]

我还没弄清楚如何使用它。

2 个答案:

答案 0 :(得分:9)

您应该可以通过以下方式将图稿提取到UIImage中:

MPMediaItemArtwork *itemArtwork = [mediaItem valueForProperty:MPMediaItemPropertyArtwork];
UIImage *artworkUIImage = [itemArtwork imageWithSize:CGSizeMake(64, 64)];

本质上,MPMediaItemPropertyArtwork属性返回MPMediaItemArtwork,然后您可以从中获取UIImage。

答案 1 :(得分:1)

我刚刚将上述答案转换为 Swift 3

let songInfo: MPMediaItem = self.arrSongs[indexPath.row] as! MPMediaItem

//歌曲信息是媒体项目。

 let itemArtwork :MPMediaItemArtwork  = songInfo.artwork!
 cell.songImg.image = itemArtwork.image(at: CGSize(width: 50, height: 50))