2011-10-19 9 views
17

現在、音楽プレーヤーで聴いているアーティスト、トラック、アルバムアートを表示するアプリを開発中です。私はアートワークのない曲を演奏したときからすべてがうまくいっています。(空白の画面を表示するのではなく)自分のデフォルト画像を表示できるようにしたいのです。iOS - MPMediaItemデフォルトアートワークを表示

以下は私が想像したとおりですが、itemArtworkが決してゼロにならないので、他の人には絶対に届かないはずです。

ご協力いただき誠にありがとうございます。

おかげで、ベン

_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

おかげでマイケル、:アートワークが存在しない場合は、bounds.size.widthbounds.size.heightプロパティが0になります!みんなiTunesのライブラリを私のようなものにしておけば、ずっと簡単だろう!おかげでもう一度、ベン –

3

:-)チェックして、あなただけかどうかを確認する必要がある場合は、この答えをマーク願っていますアートワークが存在するかどうか(多くのCPUサイクルを焼くイメージをつかむことなく)itemArtwork.boundsプロパティもチェックすることができます。私は今、すべての...そう単純で必要な正確に何

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

ニースは、確かに次回試してみる! –

関連する問題