我正在为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;
}
我的截图
感谢
答案 0 :(得分:1)
看起来你有2.5点的边框宽度。根据设备的不同,可能会导致边缘模糊。
比2的偶数倍,看看会发生什么。
编辑
我刚刚测试了我的假设,这是错误的!这确实是一个奇怪的问题。我已经看到过去的半像素对齐问题,但它们总是具有大小为奇数像素的视图的功能,因此系统必须在边缘上绘制半像素,或者具有边框它并没有以像素完美的方式排列。
我的猜测是,当涉及到舍入视图时,这是不精确的浮点数学与绘图系统中的不精确相结合的函数。削波。
我唯一的建议是使用2视图方法,其中外部视图 - 在您的情况下 - 背景颜色(或您想要边框的颜色),内部视图是标签。您可以使外部视图略大于内部视图,并使每个视图都成圆形。
答案 1 :(得分:0)
我有同样的问题,这对我有用
myLayer.allowsEdgeAntialiasing = false