环顾 Stackoverflow,您可以找到一些代码,这些代码允许您对 CALayers 的边界进行抗锯齿处理,类似于:
layer.borderColor = [UIColor whiteColor].CGColor;
CGFloat borderWidth = 1;
layer.borderWidth = borderWidth;
layer.allowsEdgeAntialiasing = YES;
layer.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge + kCALayerTopEdge | kCALayerBottomEdge;
layer.needsDisplayOnBoundsChange = NO;
layer.rasterizationScale = [UIScreen mainScreen].scale;
但是对于视网膜显示器,最好画出 1 像素宽的边框。所以我把我的边界改成这样:
CGFloat borderWidth = 1 / [[UIScreen mainScreen] scale];
唯一的问题是,之后您可以看到边缘在用户滚动时“闪烁”。它肯定比没有抗锯齿要好,但没有我想要的那么平滑。有没有人想出让图层不闪烁?