ios - 为什么在将 shadowRadius 设置为 0 的情况下使用 shadowPath 时,我的 CALayer 阴影在视网膜显示器上变得模糊?

标签 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

它在非 Retina 设备上很好,如果 shadowRadius 不为零,它似乎可以正常工作。我已经尝试将 contentsScalerasterizationScale 设置为 2,但它不会影响阴影。

还有其他想法吗?

最佳答案

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

关于ios - 为什么在将 shadowRadius 设置为 0 的情况下使用 shadowPath 时,我的 CALayer 阴影在视网膜显示器上变得模糊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039892/

相关文章:

ios - 创建 UICollectionViewCell 时如何在发件人中添加标签值?

ios - 带有 Xcode 4.1 的设备中的 Bump API 3.0 崩溃

jquery - 移除两个导航项之间的阴影

ios - 以编程方式从左向右滚动UIScrollView反向

ios - BOOL 属性返回错误的 BOOL 结果

iphone - CATiledLayer 高于正常 CALayer

iphone - 无法禁用 CALayer>>removeFromSuperlayer 的动画

iOS 12 Photos App 视频缩略图标签渐变问题

tcp - Istio tcp 流量镜像

matlab - 无阴影一维不变图像的实现