2013-08-25 12 views
5

Chcę dostać sztukę album o audiobook w bibliotece iPod, ale nie rozumiem, jak używać MPMediaItemPropertyArtworkiOS: Pobieranie i wyświetlanie okładek albumów z iPoda biblioteki

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

Więc teraz mogę dostać tytuł elementu multimedialnego takiego:

NSString *title = [mediaItem valueForProperty:MPMediaItemPropertyArtist]; 

Ale jak mogę uzyskać grafikę więc mogę wyświetlić go w UIImage? istnieje ta własność:

[mediaItem valueForProperty:MPMediaItemPropertyArtwork] 

Nie udało mi się dowiedzieć, jak z niego korzystać.

+0

możliwe duplikat [Nie stanie uzyskać UIImage z MPMediaItemPropertyArtWork] (http://stackoverflow.com/questions/6604829/not-able-to-get-the-uiimage-from-mpmediaitempropertyartwork) –

+0

Tutaj jest użytecznym odnośnikiem: https://stackoverflow.com/questions/28979013/how-do-i-get-the-album-artwork-of-the-currently-playing-music-using-swift/48035857#48035857 –

Odpowiedz

9

Powinieneś móc pobierać okładki do UIImage za pośrednictwem następujących czynności:

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

W istocie właściwość MPMediaItemPropertyArtwork zwraca MPMediaItemArtwork które można następnie uzyska od UIImage.

+0

Dzięki ! tak jak w przypadku metody imageWithSize wydaje się nie zmieniać rozmiaru obrazu, ale zamiast tego zwracany jest stały rozmiar 64x64 lub 48x48, może ma to coś wspólnego z moją komórką tableView, ale nie sądzę. –

+0

@TomLilletveit Jak sugerujesz, podejrzewam, że jest to UITableViewCell, który określa wyświetlany rozmiar UIImage. –

1

właśnie przekształcane powyższą odpowiedź Swift 3:

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

// Piosenka informacji są media poz.

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