В моем дизайне UIView
, и мне нужно разрешить пользователю изменять радиус угла.Я разработал тестер, используя @IBDesignable
и @IBInspectable
.
. Я получаю ожидаемую форму (кривая cornerRadius
) до 33% cornerRadius
e.g bounds.size.width = 100
,Я получаю правильную форму тени, если радиус угла до 33.
Если cornerRadius
больше 33, то форма тени становится кругом независимо от исходной формы cornerRadius
.
Есть предложения?
Пожалуйста, обратитесь к скриншоту кода и дизайна ниже,
Код:
@IBDesignable class DrawingView: UIView {
@IBInspectable var cornerRadius: CGFloat = 0.0
@IBInspectable var borderWidth: CGFloat = 0.0
@IBInspectable var borderColor: UIColor = .clear
@IBInspectable var shadowRadius: CGFloat = 0.0
@IBInspectable var shadowOffset: CGSize = .zero
@IBInspectable var shadowColor: UIColor = .clear
override func draw(_ rect: CGRect) {
// Drawing code
self.layer.cornerRadius = cornerRadius
self.clipsToBounds = true
self.layer.borderWidth = borderWidth
self.layer.borderColor = borderColor.cgColor
let path = UIBezierPath(roundedRect: self.bounds, cornerRadius: self.cornerRadius)
self.layer.shadowPath = path.cgPath
self.layer.shadowRadius = shadowRadius
self.layer.shadowOffset = shadowOffset
self.layer.shadowColor = shadowColor.cgColor
self.layer.masksToBounds = false
self.layer.shadowOpacity = 1.0
}
}
Скриншоты :
Радиус угла = 20%
![corenerRadius 20](https://i.stack.imgur.com/nUVNf.png)
Угловой радиус> = 33%
= 33">