CALayer Border奇怪的问题

我正在为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.5点的边框宽度。 根据设备的不同,可能会导致边缘模糊。

比2的偶数倍,看看会发生什么。

编辑

我只是测试了我的假设,这是错的! 这确实是一个奇怪的问题。 我已经看到过去的半像素对齐问题,但它们总是具有大小为奇数像素的视图的function,因此系统必须在边缘上绘制半像素,或者有边框这并不完全符合像素完美的方式。

我的猜测是,当涉及到舍入视图和剪辑时,这是不精确的浮点数学与绘图系统中的不精确相结合的函数。

那么我唯一的建议是使用2视图方法,其中外部视图 – 在您的情况下 – 背景颜色(或您想要边框的颜色),内部视图是标签。 您可以使外部视图略大于内部视图,并使每个视图都圆形。

我有同样的问题,这对我有用

myLayer.allowsEdgeAntialiasing = false