我想从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]
我还没弄清楚如何使用它。
答案 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))