2013-08-25 15 views
5

gelen albüm resimlerini gösteren Ama Yani şimdi ben başlığı alabilirsiniz MPMediaItemPropertyArtworkiOS: Alma ve ben iPod kütüphanesinde bir sesli kitabın gelen albüm kapağını almak istiyorum iPod kütüphaneden

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

nasıl kullanılacağını anlamıyorum böyle medya öğesinin:

NSString *title = [mediaItem valueForProperty:MPMediaItemPropertyArtist]; 

Ama nasıl ben sanat alırım yüzden bir UIImage gösterebildiğini? Bu özellik var:

[mediaItem valueForProperty:MPMediaItemPropertyArtwork] 

Nasıl kullanacağımı bulamadım.

+0

olası yinelenen [MPMediaItemPropertyArtWork gelen UIImage almak mümkün değil] (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 –

cevap

9

Aşağıdaki yoluyla UIImage içine kapağı almak gerekir: Özünde

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

, MPMediaItemPropertyArtwork tesis o andan itibaren bir UIImage elde edebilirsiniz bir MPMediaItemArtwork döndürür.

+0

sayesinde: yararlı bir referans ! Sadece bir not olarak imageWithSize yöntemi görüntüyü yeniden boyutlandırmak, ancak bunun yerine belki benim tableView hücre ile ilgili bir şey 64x64'e veya 48x48 ya sabit bir boyut döndürmez görünüyor, ama Sanmıyorum. Eğer ima gibi –

+0

@TomLilletveit, bunu UIImage görüntülenen boyutunu belirleyen oluyor UITableViewCell şüpheli. –

1

Sadece Swift 3için yukarıdaki cevap çevirdim:

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

// Şarkı Bilgisi Medya Öğe olduğunu. İşte

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