2016-04-12 7 views
1

Я устанавливаю изображение с помощью MPMediaItemPropertyArtwork. Код работает хорошо, когда я меняю дорожки, но когда я покидаю представление и возвращаюсь, этот код вызывается, а UIImageView.Image остается нулевым, хотя я устанавливаю его с не нулевым значением.UIImageView.image равно нулю после установки с не-нулевым значением

MPMediaItemArtwork *artwork = [nowPlayingItem valueForProperty:MPMediaItemPropertyArtwork]; 
if (artwork != nil) { 
    self.songImageView.image = [artwork imageWithSize:self.songImageView.frame.size]; 
} 

Я попробовал пару проверок, чтобы определить, что nowPlayingItem не ноль, работа не ноль, а также self.songImageView не равна нулю.

Любые идеи, где еще я должен искать?

+0

Я должен отметить это поведение. Когда я поставил точку останова на self.songImageView.image = Я попытался это: ро self.songImageView.frame.size ошибка: свойство «кадр» не найден на объект типа ошибки «UIImageView *»: 1 ошибки разбора выражение – Justin

+0

Согласно вашему комментарию, похоже, что у Imageview нет рамки. Попробуйте сначала установить кадр изображения, затем добавьте изображение так, как вы сделали –

+0

Несвязанный, но обратите внимание также, что nil оценивает значение false в Objective-C. Вы можете написать «if (artwork) {...}» вместо «if (artwork! = Nil) {...}». –

ответ

0

вы должны попробовать это

MPMediaItemArtwork *artwork = [nowPlayingItem valueForProperty: MPMediaItemPropertyArtwork]; 

// now get UIImage object from the MPMediaItemArtwork object 
if (artwork) { 
    artworkImage = [artwork imageWithSize: CGSizeMake (30, 30)]; 
    //or 
    //artworkImage = [artwork imageWithSize: self.songImageView.bounds.size]]; 

self.songImageView.image = artworkImage 
} 
+0

Я пробовал: MPMediaItemArtwork * artwork = [nowPlayingItem valueForProperty: MPMediaItemPropertyArtwork]; если (произведение искусства) { UIImage * произведение искусства = произведение искусстваWithSize: self.songImageView.bounds.size]; self.songImageView.image = artworkImage; } Не работает – Justin

+0

что касается использования ** CGSizeMake (30, 30) **? – swiftBoy

0

По ошибке вы упомянули:

self.songImageView.frame.size error: property 'frame' not found on object of type 'UIImageView *' error: 1 errors parsing expression

Похоже self.songImageView.frame равна нулю. Значит, вы можете дать ему реальное изображение, но у изображения нет рамки, чтобы представить это изображение вам. Поэтому, когда вы вызываете imageWithSize, вы получаете изображение без размера.

попробовать:

MPMediaItemArtwork *artwork = [nowPlayingItem valueForProperty:MPMediaItemPropertyArtwork]; 
if (artwork != nil) { 
    self.songImageView.frame = CGRectMake(0, 0, 100, 100); // give the imageview a frame 
    self.songImageView.image = [artwork imageWithSize:self.songImageView.frame.size]; 
} 
0

я встретил подобную проблему до того, где я написал правильный код, но при выполнении, казалось, что объект не существует.

В моем случае, я решил эту проблему, добавив

self.myObject = [[ClassOfMyObject alloc] init]; 

, прежде чем я self.myObject. (Фактически я добавил это в метод ViewDidLoad.)

Надеюсь, что мое решение поможет вам.

 Смежные вопросы

  • Нет связанных вопросов^_^