0

これは特定のコードを参照しているわけではありませんが、レイヤーにシャドウが追加された UIView がある場合、インターフェイスの向きの間を回転するときのアニメーションがはるかに遅れたり途切れたりすることに気付きました。

この問題に気づいた人、または回避策を見つけた人はいますか?

4

2 に答える 2

2

シャドウを使用する場合、 のshadowPathプロパティによりCALayer、特に新しい iPad では、パフォーマンスに非常に (!) 顕著な違いが生じます。ディスプレイの向きを変更するときに影を無効にすることは良い考えだと思いますが、使用するだけでも試してみる価値があるかもしれshadowPathません (まだ使用していない場合)。パスは任意の有効なにすることができますCGPathRefが、ほとんどの場合、これが必要です。

self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.layer.bounds].CGPath;
于 2012-07-30T18:56:16.570 に答える
1

CPU時間の点で非常に高価なものがあります。インストゥルメントでチェックしてみてください。

  • ベジエ パス
  • ダッシュ付きのベジエ パス (非常に高価)

それは包括的なリストではありません。勾配もあると思います。

UIViewControllerこれらがアニメーションや再描画を劣化させていることがわかった場合は、メソッドでそれらを切り替える必要があります。

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
//disable shadows + expensive drawing
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
//enable shadows + expensive drawing
}
于 2012-04-17T22:07:39.430 に答える