2011-10-12 9 views
15

私はUILabelCALayerのシャドウを持っています。そして、私はちょうどUIViewアニメーションで動かします。iphone - ビューの影が入っているときのアニメーションのパフォーマンスは非常に悪い

パフォーマンスが悪く、アニメーションが滑らかでないことがわかります。

アニメーションの問題を引き起こすのは、UILabelの影だと思います。なぜなら、影を消してしまうと、アニメーションが普通のように滑らかになるからです。

私はview.layer.shouldRasterize = YES;

を使用して試してみました。しかし、まだアニメーションのパフォーマンスがあります。

誰でも私にいくつかのヒントを与えることができますか?

おかげ

答えて

39

CALayerの影のパフォーマンスを大幅に向上させるには、shadowPathプロパティを使用します。これにより、レイヤーのアルファマスクを再計算せずに影を描くことができます。長方形のビューでは、このようにそれを使用したい:

theView.layer.shadowPath = [UIBezierPath bezierPathWithRect:theView.bounds].CGPath; 

をか、その角が丸みを帯びている場合、これはビューの周りの影であることを

theView.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:theView.bounds cornerRadius:theView.layer.cornerRadius].CGPath; 

注境界が-場合は、よりよいしたいですパフォーマンスを向上させるには、レーベルのテキストシャドープロパティー(CALayerシャドーの巧妙さを犠牲にする、ぼかしなど)を使用するか、はるかに複雑なオプションを使用するか、CGPathRefを使用する必要がありますテキストのグリフ自体からのレイヤーのshadowPathです。

+0

うんうん。 theView.layer.shadowPath = [UIBezierPath bezierPathWithRect:theView.bounds] .CGPath;私のパフォーマンスは非常に向上します。今はかなりスムーズです。ありがとう –

+0

ありがとう。これは私のベーコンを救った! – followben

+0

このテキストシャドープロパティはどこにありますか? – jjxtra

0

これはあなたが探している答えはあるが、私はこれが見つかった場合はわからない:Drop Shadow on UITextField text

それは、より良い性能であってもよいが、私はそれを試していないが、それは次のようになりそうです。

関連する問題