UIImageView.image在设置为非nil值后为nil



我正在使用MPMediaItemPropertyArtwork设置imageView。当我更改轨迹时,代码工作得很好,但当我离开视图并返回时,会调用此代码,并且UIImageView.Image保持为零,即使我将其设置为非零值。

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

我尝试了几次检查,以确定nowPlayingItem不是零,艺术品不是零,还有self.songImageView不是零。

有什么想法我还应该去哪里找吗?

你应该试试这个

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
}

根据您提到的错误:

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

我以前遇到过类似的问题,我写了正确的代码,但在执行时,对象似乎不存在。

就我而言,我通过添加来解决问题

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

在我使用CCD_ 1之前。(实际上我在ViewDidLoad方法中添加了这个。)

希望我的解决方案能帮助你。

相关内容

  • 没有找到相关文章

最新更新