2011-10-19 31 views
17

我目前正在開發一個應用程序,顯示您在音樂播放器中收聽的藝術家,曲目和專輯封面。除了播放沒有插圖的歌曲,我希望能夠顯示自己的默認圖像(而不是顯示空白屏幕),所有這一切都進行得很順利。iOS - MPMediaItem顯示默認圖稿

以下是我如何設想它應該工作,但它永遠不會進入其他作爲項目藝術品永遠不會零!

感謝您的幫助。

謝謝,本

_item = [_player nowPlayingItem]; 
MPMediaItemArtwork *itemArtwork = [_item valueForProperty:MPMediaItemPropertyArtwork]; 

if (itemArtwork != nil) { 
    UIImage *albumArtworkImage = [itemArtwork imageWithSize:CGSizeMake(250.0, 250.0)]; 
    _albumArtImageView.image = albumArtworkImage; 
} else { // no album artwork 
    NSLog(@"No ALBUM ARTWORK"); 
    _albumArtImageView.image = [UIImage imageNamed:@"kol.jpg"]; 
} 

回答

33

MPMediaItemArtwork似乎始終存在,即使對於不具備藝術品的軌道。

我檢測是否沒有圖像的方式是查看MPMediaItemArtwork的imageWithSize是否返回NULL。

或者,rejiggering你的代碼位:

_item = [_player nowPlayingItem]; 
UIImage *albumArtworkImage = NULL; 
MPMediaItemArtwork *itemArtwork = [_item valueForProperty:MPMediaItemPropertyArtwork]; 

if (itemArtwork != nil) { 
    albumArtworkImage = [itemArtwork imageWithSize:CGSizeMake(250.0, 250.0)]; 
} 

if (albumArtworkImage) { 
    _albumArtImageView.image = albumArtworkImage; 
} else { // no album artwork 
    NSLog(@"No ALBUM ARTWORK"); 
    _albumArtImageView.image = [UIImage imageNamed:@"kol.jpg"]; 
} 

我希望這個信息可以幫助你(如果是的話,標誌着這個答案作爲託運:-)

+1

謝謝邁克爾,這個正是我需要的。所有這麼簡單吧!如果每個人都像我一樣保留他們的iTunes資料庫,它會容易得多!再次感謝,Ben –

3

如果你只需要檢查藝術作品是否存在(沒有可能抓住圖像,這會燒焦很多CPU週期),您還可以檢查itemArtwork.bounds屬性。如果作品不存在,bounds.size.widthbounds.size.height性能將是0:

MPMediaItemArtwork *artwork = [_item valueForProperty:MPMediaItemPropertyArtwork]; 
BOOL hasArtwork = (artwork.bounds.size.width > 0 && artwork.bounds.size.height > 0); 
+0

不錯,下次肯定會試試這個! –