多くのUIView(おそらく多すぎる)をアニメーション化するUIScrollViewがあります。また、これらのUIViewは「ページ」を表し、複数のページが互いに積み重ねられて、ページの「山」になることがあります(特定のビューにサブビューを追加して設定)。
過剰な数のUIViewをスクロールするとパフォーマンスが低下する可能性があることは知っていますが、パフォーマンスを向上させるための一般的なヒントがあるかどうか疑問に思っていました。
今のところ、drawRectで手動で描画することは、さまざまな「ページパイル」アニメーションを台無しにするため、私が検討したいことではありません。最後の手段として心に留めておきますが、なるべく避けたいと思います。
更新:パフォーマンスへの影響の原因が特定され、2つあります。すべてのUIViewでアンチエイリアスとシャドウを使用しています。両方をオフに切り替えると、パフォーマンスの問題が解決されます。しかし、私は明らかにそれらをオフに切り替えたくありません:)
私は次のようにシャドウを作成しています:
self.imageView.layer.opaque = YES;
self.imageView.layer.masksToBounds = NO;
self.imageView.layer.shadowOffset = CGSizeMake(-4, 0);
self.imageView.layer.shadowRadius = 2.5;
self.imageView.layer.shadowOpacity = 0.15;
self.imageView.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(
self.bounds.origin.x,
self.bounds.origin.y,
self.bounds.size.width + 8,
self.bounds.size.height + 2)].CGPath;
パフォーマンスを向上させるためのヒントはありますか?
アンチエイリアシングに関しては、ほとんど必要です。問題は、これらの「オフセットページ」がわずかに回転していて、私のページの境界が1ピクセルであるということです。アンチエイリアシングなしで1ピクセルの境界線でわずかに回転すると、ひどく見えます。「エッジアンチエイリアスを使用したレンダリング」を「はい」に設定して、.plistでアンチエイリアスを有効にしているだけです。
シャドウ/アンチエイリアスのパフォーマンスを改善する方法についての提案をいただければ幸いです。