2010-11-19 11 views
0

こんにちは、これは私の状況です。 Interface BuilderにUIImageViewを追加し、それを針の.png画像(Needle.png)に設定しました。これをXcodeの対応するIBOutletにも接続しました。私のviewDidLoadで音源の針を回転させるにはどうすればいいですか?

:私はアンカーポイントを設定する方法、

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [needle.layer setAnchorPoint:CGPointMake(0.5, 1)]; 
} 

そして、私はまた、Interface Builderでボタンを作成し、XcodeでIBActionにそれを接続したが、このボタンは、アニメーションブロックを行い、

- (IBAction)animate { 

[UIView beginAnimations:@"rotate" context:nil]; 
[UIView setAnimationDuration:1.0]; 
self.needle.transform = CGAffineTransformMakeRotation(10 * M_PI/180); 
[UIView commitAnimations]; 

} 

私はアニメーションボタンを押すと針の画像が反時計回りに10度回転するので、スタートします。しかし、常に変化する価値観に基づいて針を常に正しい角度に回転させるためには、私は本当にそれをしたいと思っています。

たとえば、部屋の現在のデシベルレベルを示すデシベル値がある場合、その値(つまり10゜== 10dB)をその針に反映させたいのですが、この値は常に変化していますそれに応じて針が時計回りまたは反時計回りに回転します。

私はそれをどのように行うことができますか?誰かが私を助けるためのソースコードを投稿することができたら、私はそれを感謝します。

答えて

3

しかし、私は本当に にそれをやってみたいことは絶えず絶えず変化する値 をオフに基づいて正しい角度に 自体を回転針を持っています。

"常に変化する値"が変更されたときに回転値を変更します。

この値の変化に対する刺激は何ですか?そこに回転を変更するコードを配置します。

値がKVOの場合、KVOが変更されたときにそのメカニズムを使用して回転を変更できます。

また、針の動きをより流動的にするために、アニメーションブロックの変更を行うことができます。たとえば、値が1秒に1回しか変化しないとします。アニメーションブロックで変更を加え、1秒間に変化させます。それらの針の動きはあまり「ジャッキー」になりません。

アニメーションを行っている場合、setAnimationBeginsFromCurrentStateを設定することをお勧めします。既存のアニメーションの途中で値を変更(再アニメーション)すると、「正しいことを行います」。私はこの質問をしたすべての異なる方法のうち、

+0

おかげで、あなたの「setAnimationBeginsFromCurrentState」クラスメソッドを使用することをお勧めします、と私は、この作品がそうあなたの答えをありがとう作ることができる方法を見て、それを信じるかどうか、私を助けたことに最初! – cgossain