2011-10-19 13 views
17

Obecnie tworzę aplikację, która pokazuje, jakiego artysty, utworu i okładki albumów słuchasz w odtwarzaczu muzyki. Wszystko idzie dobrze, niezależnie od tego, kiedy odtwarzam piosenkę bez grafiki, chcę móc pokazać mój własny domyślny obraz (w przeciwieństwie do pokazywania pustego ekranu).iOS - MPMediaItem Wyświetlaj domyślną grafikę

Poniżej przedstawiam sposób, w jaki to sobie wyobrażałem POWINNO działać, ale nigdy nie dociera do niego jako przedmiotu. Grafika nigdy nie jest zerowa!

Twoja pomoc jest doceniana.

Dzięki, 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"]; 
} 

Odpowiedz

33

MPMediaItemArtwork wydają się istnieć zawsze, nawet na torach, które nie mają dzieła sztuki.

Sposób wykrywania, czy nie ma obrazu, to sprawdzenie, czy właściwość imageWithSize programu MPMediaItemArtwork zwraca wartość NULL.

Albo rejiggering swój kod nieco:

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

Mam nadzieję, że ta informacja pomaga się (a jeśli tak, należy zaznaczyć tę odpowiedź jako sprawdzone :-)

+1

Dzięki Michael, dokładnie to, co potrzebne .. wszystko jest tak proste teraz! Byłoby znacznie łatwiej, gdyby wszyscy trzymali bibliotekę iTunes podobną do mnie! Jeszcze raz dziękuję, Ben –

3

Jeśli wystarczy sprawdzić, czy grafika istnieje lub nie (bez możliwości przechwycenia obrazu, który spala wiele cykli procesora), można również sprawdzić właściwość itemArtwork.bounds. Jeśli grafika nie istnieje, bounds.size.width i bounds.size.height właściwości będzie 0:

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

Przyjemnie, na pewno spróbuję następnym razem! –

Powiązane problemy