Я пытаюсь размыть 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
}
Подводя итог, вот мой вопрос: Как мне изменить свой код, чтобы размыть карту, а также показать маску cirlce над ней?
ИЗМЕНИТЬ Просто выяснилось, что размытие mapview работает, если я удалю код для добавления маски круга... Возможно, это представляет интерес для решения этой проблемы.