Я получил пользовательский подкласс UIView
с именем RoundedView
:
import UIKit
@IBDesignable
class RoundedView: UIView {
@IBInspectable var shadowColor : UIColor? {
didSet {
layer.shadowColor = shadowColor?.cgColor
layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
}
}
@IBInspectable var shadowOffset : CGSize = CGSize(width: 20, height: 20) {
didSet {
layer.shadowOffset = shadowOffset
layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
}
}
@IBInspectable var shadowRadius : CGFloat = 0.0 {
didSet {
layer.shadowRadius = shadowRadius
layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
}
}
@IBInspectable var shadowOpacity : Float = 1.0 {
didSet {
layer.shadowOpacity = shadowOpacity
layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
}
}
}
С этим классом я хочу иметь возможность установить тень для вида с помощью Xcode Interface Builder.
К сожалению, поведение довольно странное; при установке цвета на синий, смещении на CGSize.zero
, радиусе на 0 и непрозрачности на 1, вся тень перемещается вправо:
Это выходные данные 1. shadowPath, 2. границ и 3. фрейма:
shadowPath:
Path 0x60800022e040:
moveto (0, 0)
lineto (300, 0)
lineto (300, 150)
lineto (0, 150)
closepath
self.bounds:
(0.0, 0.0, 300.0, 150.0)
self.frame:
(37.0, 268.5, 300.0, 150.0)
Понятия не имею, почему это происходит. Не могли бы вы помочь мне?