Используйте метод расширения UIView ниже, чтобы сделать закругленные верхние углы
func roundedTop(_ radius: CGFloat) {
let maskPath1 = UIBezierPath(roundedRect: bounds,
byRoundingCorners: [.topRight, .topLeft],
cornerRadii: CGSize(width: radius, height: radius))
let maskLayer1 = CAShapeLayer()
maskLayer1.frame = bounds
maskLayer1.path = maskPath1.cgPath
layer.mask = maskLayer1
}
И используйте метод расширения UIView ниже для тени.Измените методы в соответствии с вашими требованиями.
enum VerticalLocation: String {
case bottom
case top
}
func addShadow(location: VerticalLocation, color: UIColor = .black, opacity: Float = 0.3, radius: CGFloat = 2.0) {
switch location {
case .bottom:
addShadow(offset: CGSize(width: 0, height: 5), color: color, opacity: opacity, radius: radius)
case .top:
addShadow(offset: CGSize(width: 0, height: -5), color: color, opacity: opacity, radius: radius)
}
}
func addShadow(offset: CGSize, color: UIColor = .black, opacity: Float = 0.3, radius: CGFloat = 2.0) {
self.layer.masksToBounds = false
self.layer.shadowColor = color.cgColor
self.layer.shadowOffset = offset
self.layer.shadowOpacity = opacity
self.layer.shadowRadius = radius
}
Надеюсь, эта помощь.