这个
size
zero
对于
bounds
所以这两层都不可见。您可以引入如下自定义初始值设定项,
class PullUpOverview: UIVisualEffectView {
init(effect: UIVisualEffect?, size: CGSize) {
super.init(effect: effect)
let rect = CGRect(origin: .zero, size: size)
let maskLayer = CAShapeLayer()
maskLayer.path = UIBezierPath(roundedRect: rect,
byRoundingCorners: [.topRight, .topLeft],
cornerRadii: CGSize(width: 25, height: 25)).cgPath
maskLayer.frame = rect
layer.mask = maskLayer
let borderLayer = CAShapeLayer()
borderLayer.frame = rect
borderLayer.path = maskLayer.path
borderLayer.lineWidth = 1
borderLayer.strokeColor = UIColor.yellow.cgColor
borderLayer.fillColor = UIColor.clear.cgColor
layer.addSublayer(borderLayer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
现在你可以初始化并添加这个
view
作为,
let overviewRect = CGRect(origin: CGPoint(x: 100, y: 200), size: CGSize(width: 200, height: 200))
let overview = PullUpOverview(effect: UIBlurEffect(style: .dark), size: overviewRect.size)
overview.frame = overviewRect
self.view.addSubview(overview)