使用shadowPath并将shadowRadius设置为0时,为什么我的CALayer阴影在视网膜上显示模糊?

时间:2012-01-27 20:52:08

标签: ios calayer shadow retina-display

我有一个按钮,我正在添加一个像这样的阴影:

b.backgroundColor = [UIColor colorWithRed:0.820 green:0.878 blue:0.941 alpha:1.000];
b.layer.cornerRadius = 3;
b.layer.shadowOffset = CGSizeMake(2, 2);
b.layer.shadowOpacity = 0.2;
b.layer.shadowRadius = 0;

这很有效:

retina shadow without shadow path

如果我像这样使用阴影路径:

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

视网膜设备上的阴影模糊:

enter image description here

在非视网膜设备上没问题,如果shadowRadius不为零,似乎可以正常工作。我已尝试将contentsScalerasterizationScale设置为2,但不会影响阴影。

还有其他想法吗?

1 个答案:

答案 0 :(得分:4)

从iOS 9.0开始,contentsScale的{​​{1}}属性也会影响CALayer的光栅化比例。换句话说,将图层shadowPath设置为屏幕比例将解决您的问题。