18

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

只需在 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;

虽然这确实在我的应用程序中创建了一个美丽的阴影,但它现在在显示视图时也会滞后到死亡......即使在调试器之外启动也是如此。有什么我忘记了,还是这种方法对于更大的视图不实用?

作为参考,我在这里发布了一个截图。

4

2 回答 2

53

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

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

self.contentView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.contentView.bounds].CGPath;
于 2010-09-09T14:41:08.500 回答
6

认为我应该回答,因为我不希望这颗宝石被埋没在评论中。

除了上面cobbal的回答帮了很多忙,oculus还提到了下面针对非矩形阴影的优化,比如文字阴影。

self.contentView.layer.shouldRasterize = YES;
// Fix visual degradation when rasterizing on high-density screens:
self.contentView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
于 2013-02-22T00:51:52.360 回答