在iPhone和iPhone上使用Quartz绘制阴影的速度很慢iPad兼容。其他方式?

时间:2010-09-09 14:32:55

标签: iphone ipad uiview quartz-graphics shadow

当我发现在iPhone / iPad上为我的UIViews添加阴影是多么容易时,我感到非常兴奋。

只需在Xcode中添加框架,将导入添加到文件顶部:

#import <QuartzCore/QuartzCore.h>

然后:

self.contentView.layer.shadowRadius = 3.0;
self.contentView.layer.shadowOffset = CGSizeMake(-2.0, -3.0);
self.contentView.layer.shadowOpacity = 0.5;
self.contentView.layer.shadowColor = [UIColor blackColor].CGColor;

虽然这确实在我的应用程序中创建了一个美丽的阴影,但是当显示视图时它现在也会落后于死...即使在调试器外部启动也是如此。有没有我忘记的东西,或者这种方法对于大型观点是不实用的?

作为参考,我发布了截屏here

2 个答案:

答案 0 :(得分:53)

您应该设置shadowPath property。这是CoreGraphics能够优化阴影的方式。

例如,如果您的视图是不透明的矩形:

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

答案 1 :(得分:6)

我想我应该回答一下,因为我不希望这个宝石被埋没在评论中。

除了上面提到的cobbal的答案之外,occulus还提到了非矩形阴影的以下优化,例如文本阴影。

self.contentView.layer.shouldRasterize = YES;
// Fix visual degradation when rasterizing on high-density screens:
self.contentView.layer.rasterizationScale = [[UIScreen mainScreen] scale];