Я хочу, чтобы пользовательский интерфейс был таким
Я хочу, чтобы у этого вида был закругленный угол и тень на нем.
Здесьмоя иерархия View в Xib:
-Content View
- Shadow View
- Container View
- Left View
- Concave View
- Action View
Вот мой фрагмент для достижения текущего пользовательского интерфейса:
для вогнутого пути:
let couponPath = UIBezierPath()
let zeroPoint = CGPoint.zero
couponPath.move(to: zeroPoint)
couponPath.addLine(to: CGPoint(x: leftView.frame.width, y: zeroPoint.y))
let radius = concaveView.frame.width / 2
let centerX = zeroPoint.x + leftView.frame.width + radius
couponPath.addArc(withCenter: CGPoint(x: centerX, y: zeroPoint.y), radius: radius, startAngle: CGFloat.pi, endAngle: 0, clockwise: false)
couponPath.addLine(to: CGPoint(x: containerView.frame.width, y: zeroPoint.y))
couponPath.addLine(to: CGPoint(x: containerView.frame.width, y: containerView.frame.height))
couponPath.addArc(withCenter: CGPoint(x: leftView.frame.width + radius, y: containerView.frame.height), radius: radius, startAngle: CGFloat.pi * 0, endAngle: CGFloat.pi, clockwise: false)
couponPath.addLine(to: CGPoint(x: zeroPoint.x, y: containerView.frame.height))
couponPath.close()
И затем я создаю CALayer
этот путь couponPath
.
let shapeLayer = CAShapeLayer()
shapeLayer.path = couponPath.cgPath
И я маскирую его в свой контейнер. self.containerView.layer.mask = shapeLayer
Я пытался добавить тень, используя этот код.
let shadowLayer = CAShapeLayer()
shadowLayer.frame = containerView.frame
shadowLayer.path = shapeLayer.path
shadowLayer.shadowOpacity = 0.5
shadowLayer.shadowRadius = 5
shadowLayer.masksToBounds = false
shadowLayer.shadowOffset = CGSize(width: 0, height: 20)
self.shadowView.layer.addSublayer(shadowLayer)
Как я могу добавить еще одну маскировку, чтобы угол радиуса обзора контейнера?И есть ли лучший способ добавить тень вместо использования нового вида (ShadowView) и наложить на него тень?
Вот мой xib и вид Суть
Спасибо.