2013-08-25 4 views
5

से एल्बम कलाकृति प्रदर्शित मैं आइपॉड पुस्तकालय में एक ऑडियोबुक से एल्बम कला प्राप्त करना चाहते हैं, लेकिन मुझे समझ नहीं आता MPMediaItemPropertyArtworkiOS: हो रही है और आइपॉड पुस्तकालय

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

लेकिन मैं कलाकृति कैसे प्राप्त करूं ताकि मैं इसे यूआईएममेज में प्रदर्शित कर सकूं? इस संपत्ति है:

[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 संपत्ति एक MPMediaItemArtwork है जिसे आप से एक UIImage प्राप्त कर सकते हैं देता है।

+0

धन्यवाद ! बस एक नोट के रूप में imageWithSize विधि छवि का आकार बदलने का प्रतीत नहीं होता है, लेकिन इसके बजाय 64x64 या 48x48 के निश्चित आकार को वापस कर सकता है, शायद मेरी तालिका के साथ कुछ करने के लिए सेल देखें, लेकिन मुझे ऐसा नहीं लगता है। –

+0

@TomLilletveit जैसा कि आप इंगित करते हैं, मुझे संदेह है कि यह UITableViewCell है जो UIImage के प्रदर्शित आकार का निर्धारण कर रहा है। –

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)) 
संबंधित मुद्दे