17

私は現在、ミュージックプレーヤーで聴いているアーティスト、トラック、アルバムアートを表示するアプリを開発しています。アートワークのない曲を再生するときを除いて、すべてが順調に進んでいます。(空白の画面を表示するのではなく)自分のデフォルトの画像を表示できるようにしたいのです。

以下は、私がそれが機能するはずだと想像した方法ですが、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"];
}
4

2 に答える 2

34

MPMediaItemArtworkは、アートワークがないトラックであっても、常に存在しているように見えます。

画像がないかどうかを検出する方法は、MPMediaItemArtworkのimageWithSizeがNULLを返すかどうかを確認することです。

または、コードを少し再調整します。

_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"];
}

この情報がお役に立てば幸いです(もしそうなら、この回答をチェック済みとしてマークしてください:-)

于 2011-10-19T18:00:46.147 に答える
3

アートワークが存在するかどうかを確認する必要がある場合(おそらく画像を取得せずに、多くのCPUサイクルを消費します)、itemArtwork.boundsプロパティを確認することもできます。アートワークが存在しない場合、bounds.size.widthおよびbounds.size.heightプロパティは0になります。

MPMediaItemArtwork *artwork = [_item valueForProperty:MPMediaItemPropertyArtwork];
BOOL hasArtwork = (artwork.bounds.size.width > 0 && artwork.bounds.size.height > 0);
于 2013-11-17T15:45:54.040 に答える