2013-08-25 2 views
5

에서 앨범 사진을 표시,하지만 그래서 지금은 제목을 얻을 수 MPMediaItemPropertyArtwork아이폰 OS : 얻기 나는 아이팟 라이브러리에있는 오디오 북에서 앨범 아트를 얻으려면 아이팟 라이브러리

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

의 중복 가능성 [MPMediaItemPropertyArtWork에서있는 UIImage를 얻을 수 없음 (http://stackoverflow.com/questions/6604829/not-able-to-get-the-uiimage-from-mpmediaitempropertyartwork) –

+0

유용한 참고 자료입니다. https://stackoverflow.com/questions/28979013/how-do-i-get-the-album-artwork-of-the-currently-playing-music-using-swift/48035857#48035857 –

답변

9

다음을 통해있는 UIImage에 아트 워크를 가져올 수있을 것입니다 : 본질적으로

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

MPMediaItemPropertyArtwork 속성은 다음에서있는 UIImage를 얻을 수있는 MPMediaItemArtwork을 반환합니다.

+0

감사합니다. ! 참고로 imageWithSize 메서드는 이미지의 크기를 조정하지 않는 대신 64x64 또는 48x48 중 하나의 고정 크기를 반환합니다. 아마도 내 tableView 셀과 관련이 있지만 그렇게 생각하지는 않습니다. –

+0

@TomLilletveit 당신이 암시하는 바와 같이, 나는 그것이 UIImage의 표시된 크기를 결정하는 UITableViewCell이라고 생각합니다. –

1

난 그냥 스위프트 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))