MKPolygonRenderer使用相同的lineWidth值产生不同的可视线宽

如果使用 MKPolygonRenderer 渲染多边形,则会出现一个奇怪的现象。 似乎它使用相同的值呈现不同的线宽。 我知道您可以对渲染器进行子类化,并覆盖如下函数来应用缩放比例:

class CustomPolyline: MKPolylineRenderer {
    override func applyStrokeProperties(to context: CGContext,atzoomScale zoomScale: MKzoomScale) {
        super.applyStrokeProperties(to: context,atzoomScale: zoomScale)
        UIGraphicsPushContext(context)
        if let ctx = UIGraphicsgetcurrentContext() {
            ctx.setLineWidth(self.lineWidth)
        }
    }
} 

但这不会让我创建线宽如2.0或4.0的线。 您出于某些原因在stackOverflow上找到的所有解决方案都使用奇怪的高数字作为行宽。

有人知道如何解决此问题吗?

这是我设置渲染器的代码:

func mapView(_ mapView: MKMapView,rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if let polygon = overlay as? MKPolygon,polygon != worldPolygon {
        let renderer = MKPolygonRenderer(polygon: polygon)
        renderer.strokeColor = Colors.secondary300.color
        renderer.lineWidth = 2
        return renderer
    } else if let polygon = overlay as? MKPolygon,polygon == worldPolygon {
        let renderer = MKPolygonRenderer(polygon: polygon)
        renderer.fillColor = Colors.anthracite.color.withAlphaComponent(0.3)
        return renderer
    }

    return MKOverlayRenderer()
}

这是不同多边形的视觉输出:

MKPolygonRenderer使用相同的lineWidth值产生不同的可视线宽

MKPolygonRenderer使用相同的lineWidth值产生不同的可视线宽

shi69005139 回答:MKPolygonRenderer使用相同的lineWidth值产生不同的可视线宽

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2606124.html

大家都在问