2011-10-19 6 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

감사 마이클, 정확히 내가 .. 모두 너무 간단 지금 필요한 것! 모든 사람들이 나 같은 iTunes 보관함을 유지한다면 훨씬 쉽습니다! 다시 한 번 감사드립니다, 벤 –

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

니스, 확실히 다음 번에 시도해 줘! –