摘自:iOS应用性能调优的25个建议和技巧
如何在一个View或者一个layer上加一个shadow呢,QuartzCore框架是很多开发者的选择:
#import
// Somewhere later ...
UIView *view = [[UIView alloc] init];
// Setup the shadow ...
view.layer.shadowOffset = CGSizeMake(-1.0f, 1.0f);
view.layer.shadowRadius = 5.0f;
view.layer.shadowOpacity = 0.6;
看起来很简单,对吧。
可是,坏消息是使用这个方法也有它的问题… Core Animation不得不先在后台得出你的图形并加好阴影然后才渲染,这开销是很大的。
使用shadowPath的话就避免了这个问题:
view.layer.shadowPath = [[UIBezierPath bezierPathWithRect:view.bounds] CGPath];
使用shadow path的话iOS就不必每次都计算如何渲染,它使用一个预先计算好的路径。但问题是自己计算path的话可能在某些View中比较困难,且每当view的frame变化的时候你都需要去update shadow path.
想了解更多可以看看Mark Pospesel的<a href = "http://markpospesel.wordpress.com/2012/04/03/on-the-importance-of-setting-shadowpath/">这篇</a>。