使用非零值设置后,UIImageView.image为nil

时间:2016-04-12 17:01:36

标签: ios objective-c uiimageview mpmediaitem

我正在使用MPMediaItemPropertyArtwork设置imageView。当我改变轨道时,代码运行良好,但是当我离开视图并返回时,调用此代码并且UIImageView.Image保持为零,即使我使用非零值设置它。

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

我已经尝试了几项检查来确定nowPlayingItem不是nil,art不是nil而且self.songImageView也不是nil。

我还应该关注其他任何想法吗?

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

根据你提到的错误:

  

self.songImageView.frame.size错误:找不到属性'frame'   'UIImageView *'类型的对象错误:解析表达式时出错1个

看起来self.songImageView.frame是零。 因此,您可能会给它一个真实的图像,但是imageview没有框架可以向您呈现该图像。因此,当您调用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];
}