CALayer边框的奇怪问题

3

我正在为CALayer添加边框,但出现了一些奇怪的行为,即在应用边框后我得到了一个模糊的边框(请参见截图)

这是我的代码:

- (void)configureLabel {
self.hidden = YES;
self.textAlignment = NSTextAlignmentCenter;
self.font = kLightFontWithSize(12);
self.textColor = [UIColor whiteColor];
self.backgroundColor = [UIColor redColor];

self.clipsToBounds=YES;



CALayer * layer = self.layer;
layer.backgroundColor = [UIColor clearColor].CGColor;
layer.cornerRadius = self.frame.size.height / 2;
layer.borderWidth = 2.5f;
layer.borderColor = kTextFieldGreenColor.CGColor;
}

我的截图

输入图像描述 谢谢

2个回答

1

看起来你的边框宽度为2.5像素。根据设备不同,这可能会导致边缘模糊。

让它成为2的倍数,然后看看会发生什么。

编辑

我刚刚测试了我的假设,结果是错误的!这确实是一个奇怪的问题。过去我曾经遇到过半像素对齐问题,但那通常是由于视图大小为奇数像素,因此系统必须在边缘上绘制半个像素,或者由于边框没有完全像素完美对齐而引起的。

我猜测这可能是由于精度不够的浮点数学与绘图系统在修整视图和剪裁时存在精度问题相结合造成的。

那么,我的唯一建议就是使用两个视图的方法,其中外部视图是你的背景颜色(或者你想要的边框颜色),而内部视图则是标签。你可以使外部视图略大于内部视图,并使它们各自变圆。


1

我曾经遇到同样的问题,这个方法对我有用:

myLayer.allowsEdgeAntialiasing = false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接