2016-04-12 9 views
1

私はMPMediaItemPropertyArtworkでimageViewを設定しています。このコードは、トラックを変更するとうまく動作しますが、ビューを閉じたままにしておくと、このコードが呼び出され、UIImageView.Imageはゼロ以外の値で設定してもゼロになります。UIImageView.imageはnil以外の値で設定された後はnilです

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

私はアートワークがnilでないともself.songImageViewがnilでない、nowPlayingItemがnilでないことを決定するためにチェックのカップルを試してみました。

他にも私が探しているはずのアイデアはありますか?

+0

この動作に注意する必要があります。私はself.songImageView.image = にブレークポイントを設定すると、私はこれを試みた: 経口self.songImageView.frame.size エラー:プロパティ「フレーム」タイプのオブジェクトに見つかりません「UIImageView *」 エラー:1つのエラーが解析を式 – Justin

+0

あなたのコメントによると、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]; if(アートワーク){ 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がnilであるように見えます。 それは本当のイメージを与えているかもしれませんが、イメージビューにはそのイメージをあなたに提示するフレームがありません。したがって、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を使用する前に

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

を追加することで問題を解決しました。 (実際にはViewDidLoadの方法でこれを追加しました)

私の解決策が役に立ちます。

関連する問題