在Swift中的地图上的Mkoverlay中添加模糊视图



我正在尝试将模糊添加到Mkmapview。也就是说,我想模糊地图上的一些矩形区域。

我尝试建立一个会引起模糊的mkoverlayrenderer,但是我一直难以设置它,以使模糊会影响下面的东西,而不仅仅是显示灰色区域或什么都没有。

这是我的尝试,我知道它不起作用,但我只是不知道该如何解决。

class BlurOverlayRenderer: MKOverlayRenderer {
    var blurView: UIVisualEffectView?
    override init(overlay: MKOverlay) {
        super.init(overlay: overlay)
        blurView = UIVisualEffectView(effect: UIBlurEffect(style: .regular))
    }
    override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in context: CGContext) {
        context.draw(blurView?.layer as! CGLayer, at: CGPoint.zero)
    }
} 

如何修复此渲染器以模糊地图上的区域?

UIVisualEffectView无法使用,因为它应该在UIView层次结构中,因此Uikit可以找到基础视图并创建模糊的图片。但是MKMapView正在使用基于自定义层的渲染树。这就是为什么您获得灰色区域的原因。

您可以尝试做的是在相应的mapRect中创建context的图片,然后在同一地点绘制。

最新更新