2011-10-19 16 views
17

Attualmente sto sviluppando un'applicazione che mostra quale artista, traccia e copertine di album stai ascoltando nel lettore musicale. Tutto sta andando bene a prescindere dal momento in cui suono una canzone senza artwork, voglio poter mostrare la mia immagine predefinita (al contrario di mostrare uno schermo vuoto).iOS - MPMediaItem Mostra un'immagine predefinita

Il seguente è come l'ho immaginato DOVREBBE lavorare tuttavia non entra mai nel resto come l'oggetto Artwork non è mai nullo!

Il vostro aiuto è apprezzato.

Grazie, Ben

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

risposta

33

MPMediaItemArtwork sembrano esistere sempre, anche per le tracce che non hanno opere d'arte.

Il modo in cui viene rilevato se non ci sono immagini è vedere se l'immagine di MPMediaItemArtworkWithSize restituisce NULL.

Oppure, rejiggering il codice un po ':

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

Spero che queste informazioni ti aiuta (e se è così, contrassegnare questa risposta come verificato :-)

+1

Grazie Michael, esattamente quello che mi serviva .. tutto così semplice ora! Sarebbe molto più facile se tutti tenessero la loro libreria di iTunes come me! Grazie ancora, Ben –

3

Se avete solo bisogno di controllare se la grafica esiste o no (senza possibilmente afferrare l'immagine, che brucia un sacco di cicli della CPU) è anche possibile controllare la proprietà itemArtwork.bounds. Se l'opera d'arte non esiste, i bounds.size.width e bounds.size.height proprietà saranno 0:

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

Bello, ci proveremo sicuramente la prossima volta! –

Problemi correlati