iOS: неверный путь к слою - PullRequest
       69

iOS: неверный путь к слою

0 голосов
/ 18 декабря 2018

В моем дизайне 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

Угловой радиус> = 33%

image= 33">

...