我正在尝试在显示一个圆形蒙版的情况下模糊MKMapView的背景。为了更好地可视化我的意思,您可以在附加的图像中找到当前状态的图像:
这几乎展示了我想要的东西,但是背景(地图)应该是模糊的,而在这张图片中不是这样。我尝试使用UIVisualEffectView,但似乎我在那里做错了什么。以下是我尝试过的:
func createOverlay(at: CGPoint) {
var blur: UIView!
blur = UIVisualEffectView (effect: UIBlurEffect (style: UIBlurEffectStyle.dark))
blur.frame = self.mapView.frame
blur.isUserInteractionEnabled = false
self.mapView.addSubview(blur)
let circleSize: CGFloat = 200
let path = UIBezierPath (
roundedRect: blur.frame,
cornerRadius: 0)
let circle = UIBezierPath (
roundedRect: CGRect (origin: CGPoint(x:at.x - circleSize/2, y: at.y-circleSize/2),
size: CGSize (width: circleSize, height: circleSize)), cornerRadius: circleSize/2)
path.append(circle)
path.usesEvenOddFillRule = true
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
maskLayer.fillRule = kCAFillRuleEvenOdd
let borderLayer = CAShapeLayer()
borderLayer.path = circle.cgPath
borderLayer.strokeColor = UIColor.white.cgColor
borderLayer.lineWidth = 10
blur.layer.addSublayer(borderLayer)
blur.layer.mask = maskLayer
}
总结我的问题如下:
我需要如何更改我的代码,才能使地图视图模糊,并在其上方显示圆形蒙版?
编辑 刚刚发现,如果我删除添加圆形蒙版的代码,则地图视图的模糊效果可以实现...或许这对解决问题有帮助。
self.view.insertSubview(blur, aboveSubview: self.mapView)
代替self.mapView.addSubview(blur)
吗?我尝试了一下,但没有看到任何变化。 - dehlen