2011-10-19 28 views
17

Tôi hiện đang phát triển một ứng dụng cho biết nghệ sĩ, bản nhạc và nghệ thuật album nào bạn đang nghe trong Trình phát nhạc. Tất cả đều diễn ra tốt đẹp khi tôi chơi một bài hát không có tác phẩm nghệ thuật tôi muốn có thể hiển thị hình ảnh mặc định của riêng mình (thay vì hiển thị một màn hình trống).iOS - MPMediaItem Hiển thị Ảnh minh họa mặc định

Dưới đây là cách tôi tưởng tượng nó NÊN làm việc tuy nhiên nó không bao giờ được vào người khác như itemArtwork không bao giờ là nil!

Trợ giúp của bạn được đánh giá cao.

Cảm ơn, 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"]; 
} 

Trả lời

33

MPMediaItemArtwork dường như luôn tồn tại, ngay cả đối với các bài hát mà không có tác phẩm nghệ thuật.

Cách tôi phát hiện nếu không có hình ảnh là để xem hình ảnh của MPMediaItemArtworkWithSize trả về NULL.

Hoặc, rejiggering mã của bạn một chút:

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

Tôi hy vọng thông tin này giúp bạn hiểu (và nếu như vậy, đánh dấu câu trả lời này là kiểm tra :-)

+1

Cảm ơn Michael, chính xác những gì tôi cần .. tất cả đơn giản vì vậy bây giờ! Sẽ dễ dàng hơn nhiều nếu mọi người giữ thư viện iTunes của họ khá giống tôi! Cảm ơn một lần nữa, Ben –

3

Nếu bạn chỉ cần kiểm tra xem các tác phẩm nghệ thuật tồn tại hay không (không có thể lấy hình ảnh, mà đốt cháy rất nhiều chu kỳ CPU), bạn cũng có thể kiểm tra các tài sản itemArtwork.bounds. Nếu tác phẩm nghệ thuật không tồn tại, các bounds.size.widthbounds.size.height tính sẽ là 0:

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

Đẹp, chắc chắn sẽ cung cấp cho một thử lần sau! –

Các vấn đề liên quan