我正在尝试将模糊添加到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
的图片,然后在同一地点绘制。