2012-02-07 7 views
1

私はアニメーションの縦棒グラフを開発していますが、何か問題があります。 棒グラフはスケールアニメーションで表示されます。最初はすべての列が1ポイントのサイズを持ち、定義済みの高さまで拡大縮小します。グラデーション付きのUIViewをスケールする

ポイントは次のとおりです。カラム(UIViewのサブクラス)にグラデーションを描き、スケールアニメーションでグラデーションを再計算したいとします。

これまで、私はグラデーションを描画していましたが、カラムスケールではグラデーションはそれに合わせて縮尺されません。 ビューの高さが1ポイントなので、グラデーションは1色のみとして表示されます。

誰かが私にこの問題を解決するために北を与えることができますか?

答えて

1

問題を解決しました!私はスケールを使用しての代わりに、ビューの境界を変更した

.. は

view.transform = CGAffineTransformMakeScale(1.0, scaleY.floatValue); 

たとscaleYが前に計算され、Yスケールファクタが含まれているのNSNumberであるた

view.bounds = CGRectMake(view.bounds.origin.x, view.bounds.origin.y * scaleY.floatValue, view.bounds.size.width, view.bounds.size.height * scaleY.floatValue); 

でなければなりません。 それは

view.contentMode = UIViewContentModeRedraw; 

を設定する必要はありませんに助けをあなたにDarkDuskをありがとうございます。

0

contentModeを設定してみてください:

myView.contentMode = UIViewContentModeRedraw; 

これは、すべてのサイズの変更に再描画を強制します。

+0

did not work。私はより良く説明しましょう。私はプロット領域(ビュー)とプロット領域のサブビューとして私は(ビューもある)列を持っている。 drawRectメソッドの列で、グラデーションを描画します。コンテンツモードを設定すると、サイズ変更ごとにdrawRectが呼び出されます。 –

+0

はい、サイズ変更ごとに 'drawRect:'を呼び出す必要があります。それをチェックする 'NSLog'を追加してください。次に、グラデーションの描画を再確認します。 – DarkDust

+0

解決済み、上記の私の答えを参照してください –