0

を使用して、レイヤーが属するビューのビューコントローラーにあるデリゲートメソッドCALayerを介してパスを表示しています。drawLayer:inContextユーザーが画面上で指を動かすたびに、パスが更新され、レイヤーが再描画されます。ただし、描画はタッチに追いついていません。パスの最後の 2 点の表示には常にわずかな遅れがあります。また、ちらつきますが、最後の 2 ~ 3 ポイントを再び表示している間だけです。ビューのdrawRectで描画を行うと、正常に動作し、描画は間違いなく十分に高速です。

なぜこのように振る舞うのか誰にも分かりますか?レイヤーのバッファリングに関係していると思われますが、それに関するドキュメントは見つかりませんでした。

4

3 に答える 3

1

[UIView new]は単にの省略形です[[UIView alloc] init]

于 2010-04-20T22:30:59.333 に答える
1

メソッドの前に次のように指定しますsetNeedsDisplay::

[CATransaction begin];

[CATransaction setValue:[NSNumber numberWithFloat:someDelay] forKey:kCATransactionAnimationDuration];

[aLayer setNeedsDisplay];                    
[CATransaction commit];
于 2010-11-18T11:09:22.517 に答える
0

レイヤー ホスティング ビューを使用すると、うまくいくかもしれません。

drawLayer:inContext: メソッドを使用する代わりに、必要なビューをセットアップし、それに CALayer を追加します。

UIView *layerHosting = [[UIView alloc] initWithFrame:frame];
[layerHosting setLayer:[[CALayer new] autorelease]];

それが役立つことを願っています!

于 2009-02-10T22:22:49.473 に答える