2016-04-12 70 views
1

我正在用MPMediaItemPropertyArtwork設置imageView。當我更改軌道時,代碼工作正常,但是當我離開視圖並返回時,調用此代碼並且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 = 上設置一個斷點時,我試過這個: po self.songImageView.frame.size 錯誤:屬性'框架'找不到對象的類型'UIImageView *' 錯誤:1錯誤解析表情 – Justin

+0

根據你的評論,它看起來像Imageview沒有框架。先嚐試設置imageview的框架,然後按照你的方式添加圖像 –

+0

不相關,但是還要注意在Objective-C中nil的計算結果爲false。你可以在「if(artwork!= nil){...}」的位置寫上「if(artwork){...}」。 –

回答

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 * artworkImage = [藝術作品imageWithSize: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爲零。 所以你可能會給它一個真實的圖像,但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]; 
} 
0

我遇到過類似的問題,在這裏我寫正確的代碼,但在執行時,它似乎是對象不存在。

就我而言,我加入

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

我用self.myObject之前解決了這個問題。 (其實我在ViewDidLoad方法中加了這個。)

希望我的解決方案能幫到你。