私はiPhoneアプリケーションのための非常に単純な線画アニメーションを実装しようとしています。遅れて私の視野に長方形を描きたい。私は描画メソッドを実行するのにperformSelector
を使用しています。その後、経由で起動され遅延描画によるシンプルなアニメーション
-(void) drawRowAndColumn: (id) rowAndColumn
{
int rc = [rowAndColumn intValue];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGRect rect = CGRectMake(rc * 100, 100, 100, 100);
CGContextAddRect(context, rect);
CGContextDrawPath(context, kCGPathFillStroke);
}
:
int col = 10;
[self performSelector:@selector(drawRowAndColumn:)
withObject:[NSNumber numberWithInt:col]
afterDelay:0.2];
しかし、drawRowAndColumn:
メッセージが実際に送信されたとき、私のようなエラーを取得として、それはもはや、有効CGContextRef
へのアクセス権を持っていないようです:
<Error>: CGContextAddRect: invalid context
performSelector
をdrawRowAndColumn
への直接の呼び出しで置き換えた場合、正常に動作します。だから私の最初のアイデアもperformSelector
経由CGContextRef
に渡すことでしたが、私は、同時に複数の引数を渡す方法を見つけ出すように見えることはできません(それは別の良い質問ですね。)
は、上記のコードで何が悪いのでしょうか?
私はそれが何か簡単だったことを知っていました、ありがとう! –
アニメーションを行うにはどうすればいいですか? – mk12
コアアニメーション、または上位レベルのUIViewラッパーを使用します。それは私の答えの最後の段落(UIViewアニメーションブロック)について話していたものです。アニメーションブロックを開始し、いくつかのUIViewプロパティを設定し、アニメーションをコミットし、プロパティの変更をアニメーション化します(タイミングなどを制御できます)。 – philsquared