4

私のアプリには、約20のサブビューを持つscrollViewがあります。これらの各サブビューには、現時点では次のような drawRect メソッドがあります。

- (void)drawRect:(CGRect)rect
{
    NSLog(@"drawRect called");
}

サブビューが追加されると drawRect が呼び出されますが、スクロールすると drawRect が再度呼び出されなくても非常に遅くなります。

drawRect の実装を削除すると、スクロールは完全に正常になります。遅いスクロールを取り除くことができない場合でも、代わりに使用できる drawRect の代替手段はありますか?

4

2 に答える 2

1

呼び出されたことをログに記録しているだけの場合、なぜ drawRect を呼び出すのですか? それがあなたにとって唯一の目的である場合は、それを呼び出さないでください。実際、drawRect メソッドを含む UIView から継承するクラスを最初に作成すると、コメント アウトされ、コメント アウトされた drawRect メソッドの上に、「次の場合はこのメソッドを呼び出さないでください」という行に沿って何かが表示されると思います。大量のメモリを消費するため、画面に描画を行いません。」基本的に、あなたの場合は呼び出さないでください。

お役に立てれば。

于 2012-06-03T18:32:31.957 に答える
0

ビューが最初に表示される前に、事前に描画された CGImages を各カスタム ビューの CALayer のコンテンツに割り当ててみることができます。これは、drawRect を使用してビューの外観をカスタマイズするよりも高速な場合があります。

于 2012-06-04T01:37:41.883 に答える