摘自:iOS應(yīng)用性能調(diào)優(yōu)的25個(gè)建議和技巧
如何在一個(gè)View或者一個(gè)layer上加一個(gè)shadow呢僵驰,QuartzCore框架是很多開(kāi)發(fā)者的選擇:
#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;
看起來(lái)很簡(jiǎn)單,對(duì)吧逾一。
可是分飞,壞消息是使用這個(gè)方法也有它的問(wèn)題… Core Animation不得不先在后臺(tái)得出你的圖形并加好陰影然后才渲染婿失,這開(kāi)銷是很大的嫩痰。
使用shadowPath的話就避免了這個(gè)問(wèn)題:
view.layer.shadowPath = [[UIBezierPath bezierPathWithRect:view.bounds] CGPath];
使用shadow path的話iOS就不必每次都計(jì)算如何渲染剿吻,它使用一個(gè)預(yù)先計(jì)算好的路徑。但問(wèn)題是自己計(jì)算path的話可能在某些View中比較困難串纺,且每當(dāng)view的frame變化的時(shí)候你都需要去update shadow path.
想了解更多可以看看Mark Pospesel的<a >這篇</a>丽旅。