2011-03-04 1 views
2

3つのビューコントローラが読み込まれたスクロールビューがあります。各ビューコントローラはそのコードでレイヤーを描画しています - (それ以上はそこにありますが、それが助けになるかどうかチェックするためにそれを抜き出しました)。それでも私は非常にうろつきがあります。 助けてください?CALayerで描画された3つのビューコントローラが読み込まれたスクロールビューのパフォーマンスが悪い

CALayer *sublayer = [CALayer layer]; 
sublayer.backgroundColor = [Helper cardBackGroundColor:card].CGColor; 
sublayer.shadowOffset = CGSizeMake(0, 3); 
sublayer.shadowRadius = 5.0; 
sublayer.shadowColor = [UIColor blackColor].CGColor; 
sublayer.shadowOpacity = 0.8; 
sublayer.frame = CGRectInset(self.view.layer.frame, 20, 20); 
sublayer.borderColor = [UIColor blackColor].CGColor; 
sublayer.borderWidth = 2.0; 
sublayer.cornerRadius = 10.0; 
[self.view.layer addSublayer:sublayer]; 

答えて

2

しばしば貧弱なパフォーマンスが得られます。私たちは通常、適切なパフォーマンスを得るために伸縮可能な画像を使用します。あなたがそれを考えるとき、リアルタイムでレンダリングするためにiPhoneの限られた処理能力を使うのではなく、手前でレンダリングするのが理にかなっています。

CALayerから適切なパフォーマンスが得られる可能性がありますが、pngの描画はまだまだ高速になるため、バッテリの使用時間を節約できます。

編集:ここではその概念を説明する例を示します。

このコードは実際に遅すぎるCALayer図面を置き換えました。

UIImageView *shadow = [[UIImageView alloc] initWithFrame:frame]; 
shadow.image = [[UIImage imageNamed:@"shadow.png"] stretchableImageWithLeftCapWidth:16.0 topCapHeight:16.0]; 
[contentView addSubview:shadow]; 
[shadow release]; 

shadow.pngは、34ピクセルで、影付きの四角形を含んでいます。伸縮性のある画像のおかげで、影を伸ばしずに四角形のサイズを変更することができます。これに関する詳細については、stretchableImageWithLeftCapWidth:topCapHeight:のドキュメントを読むことをお勧めします。また、Googleでは、伸縮性のある画像を扱う方法のガイドを見つけるのを手伝います。あなたはさらに質問があるなら、私はそれらに答えることを喜ぶでしょう。

+0

こんにちは。あなたが説明している伸縮性のある技術についてもっと説明できますか? – shannoga

+0

確かに、私の答えを編集しました。 –

+0

ありがとうございます。それはとても役に立ちました。 – shannoga

1

シャニあなたはマスク(YES =あなたはどこかmasksToBounds言うと仮定した場合)と、この層の上に影を持っています。両方ともオフスクリーンレンダリングパスを引き起こします。

セッション425 WWDC 2010を見てください - 練習パートでのCore Animation 2

あなたがここで見つけることができ; CALayerで物事を描く

http://developer.apple.com/videos/wwdc/2010/

+0

こんにちは、ありがとう。それは確かに陰影であり、参照は素晴らしかったです。私はそれが最初のものだったので、上記の答えを受けました。 – shannoga

関連する問題