2013-08-25 38 views
5

Tôi muốn để có được những album nghệ thuật từ một audiobook trong thư viện iPod, Nhưng tôi không hiểu làm thế nào để sử dụng MPMediaItemPropertyArtworkiOS: Bắt và hiển thị album ảnh nghệ thuật từ iPod thư viện

- (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; 
} 

Vì vậy, bây giờ tôi có thể nhận được danh hiệu của mục phương tiện truyền thông như thế này:

NSString *title = [mediaItem valueForProperty:MPMediaItemPropertyArtist]; 

Nhưng làm thế nào để tôi có được tác phẩm nghệ thuật để tôi có thể hiển thị nó trong UIImage? có sản phẩm này:

[mediaItem valueForProperty:MPMediaItemPropertyArtwork] 

Tôi chưa tìm ra cách sử dụng.

+0

thể trùng lặp của [Không thể nhận được UIImage từ MPMediaItemPropertyArtWork] (http://stackoverflow.com/questions/6604829/not-able-to-get-the-uiimage-from-mpmediaitempropertyartwork) –

+0

đây là một tham chiếu hữu ích: https://stackoverflow.com/questions/28979013/how-do-i-get-the-album-artwork-of-the-currently-playing-music-using-swift/48035857#48035857 –

Trả lời

9

Bạn sẽ có thể lấy tác phẩm nghệ thuật thành một UIImage qua như sau:

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

Về bản chất, các MPMediaItemPropertyArtwork tài sản trả về một MPMediaItemArtwork mà sau đó bạn có thể lấy một UIImage từ.

+0

Cảm ơn ! cũng giống như một lưu ý phương thức imageWithSize dường như không thay đổi kích thước hình ảnh, nhưng thay vì trả về kích thước cố định là 64x64 hoặc 48x48, có thể có gì đó liên quan đến ô tableView của tôi, nhưng tôi không nghĩ vậy. –

+0

@TomLilletveit Như bạn ngụ ý, tôi nghi ngờ đó là UITableViewCell xác định kích thước hiển thị của UIImage. –

1

Tôi vừa chuyển đổi câu trả lời ở trên để Swift 3:

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

// Sông Thông tin Truyền thông là Item.

let itemArtwork :MPMediaItemArtwork = songInfo.artwork! 
cell.songImg.image = itemArtwork.image(at: CGSize(width: 50, height: 50)) 
Các vấn đề liên quan