我正在使用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。
我还应该关注其他任何想法吗?
答案 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];
}