Я пытаюсь настроить вид с закругленными углами, но только с верхним левым и правым углом и с цветной рамкой.Это мой класс представлений:
class PullUpOverview: UIVisualEffectView {
override init(effect: UIVisualEffect?) {
super.init(effect: effect)
let maskLayer = CAShapeLayer()
maskLayer.path = UIBezierPath(roundedRect: bounds,
byRoundingCorners: [.topRight, .topLeft],
cornerRadii: CGSize(width: 25, height: 25)).cgPath
layer.mask = maskLayer
let borderLayer = CAShapeLayer()
borderLayer.frame = bounds
borderLayer.path = maskLayer.path
borderLayer.lineWidth = 1
borderLayer.strokeColor = UIColor.gray.cgColor
borderLayer.fillColor = UIColor.clear.cgColor
layer.addSublayer(borderLayer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Я добавляю представление к своему представлению viewController в методе viewDidLoad
следующим образом (overviewRect
настроен правильно):
let overview = PullUpOverview(effect: UIBlurEffect(style: UIBlurEffect.Style.extraLight))
overview.frame = overviewRect
self.mapView.addSubview(overview)
Ноесли я добавлю вид, ничего не появится.Если я изменяю суперкласс PullUpOverview
на UIView и меняю свой код в методе viewDidLoad
на следующий вид, а его маска добавляется и применяется правильно (очевидно, эффект размытия отсутствует, поэтому я попытался сделать то же самоес и UIVisualEffectView
):
let overview = PullUpOverview(frame: overviewRect)
self.mapView.addSubview(overview)
Так что мне нужно изменить, чтобы я получил UIVisualEffectView с двумя закругленными углами (оба верхних угла) и пограничным слоем?