2

环顾 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];

唯一的问题是,之后您可以看到边缘在用户滚动时“闪烁”。它肯定比没有抗锯齿要好,但没有我想要的那么平滑。有没有人想出让图层不闪烁?

4

1 回答 1

0

我知道,这不是最近的事,但也许 contentsScale 可以解决问题。在 Swift 中查看全部内容

    let layer = view.layer
    layer.borderColor = UIColor.white.CGColor
    let borderWidth = CGFloat(1.0)
    layer.borderWidth = borderWidth
    layer.allowsEdgeAntialiasing = true
    layer.edgeAntialiasingMask = [.LayerBottomEdge, .LayerTopEdge, .LayerLeftEdge, .LayerRightEdge]
    layer.needsDisplayOnBoundsChange = false
    layer.rasterizationScale = UIScreen.mainScreen().scale
    layer.contentsScale = UIScreen.mainScreen().scale
于 2016-09-14T14:56:28.610 回答