2011-12-05 10 views
0

私はグローバル変数pを持っています。 私はこのグローバル変数の値に応じて複雑なUIViewオブジェクトを描画(または再描画)する関数を持っています。 pを増やすと、uiviewオブジェクトを再描画する必要があります。アニメーションを使ってこれを行う必要があります。例えばアニメーションios objective-c

double pInitialValue=0.5; 
double pNewValue=1.0; 

//somewhere before animation we must call [self redraw] to draw our view with p=pInitialValue; 

//then, when we call animate function. 
//we change p to pNewValue 
//and every step must be redrawed using [self redraw] 

p=pNewValue; //using animation p must slowly grow from pInitialValue to pNewValue 
[self redraw]; //and ofcourse user must see every step of animation so we need to call redraw function 

私は、この4秒の間、私のpはpNewValueにpInitialValueから成長しなければならないし、すべてのステップ私の再描画機能が

呼ばれなければならないで私を助けていることを意味期間4 とアニメーションを必要としますお願いします。どのようにそれを行うことができますか?

+0

標準のUIViewアニメーションについて聞いたことがありますか?彼らはほんの数行のコードでほとんどすべてを行います。 –

答えて

1

タイマーを使用してpの値を増やすことができます。このようにそれを行う:あなたはあなたのアニメーションが何が起こるしたい直前その後

NSTimer *timer; 

のように定義されたクラスでインスタンス変数を持っている:

:メソッドは、このよう increasePと呼ばれているよりも

CGFloat timerInterval = 1/30; // This means 30 frames per second. Change this as you want. 
timer = [NSTimer scheduledTimerWithTimeInterval:timerInterval target:self selector:@selector(increaseP) userInfo:nil repeats:YES]; 

- (void)increaseP 
{ 
    if (p < maxPValue) { 
     // Increase p here and redraw your things 
    } 
    else { 
     [timer invalidate]; 
    } 
} 

ご不明な点がありましたら、ご連絡ください。

+0

すべて正常に動作します。しかし、これは私のビューの回転線形をアニメーション化します。どのようにUIViewAnimatinCurveEaseInのようにそれをアニメーション化することができますか? – Oleg

+1

私はそれが助けてうれしいです。残念ながら、私はあなたが非線形の方法でpValueをどのように増やすことができないか分かりませんので、私はあなたにそれを手伝ってくれるとは思いません。他の人から助けを得ることができるように別の質問をするべきです。乾杯! –

関連する問題