diff --git a/VDS/Components/RadioBox/RadioBox.swift b/VDS/Components/RadioBox/RadioBox.swift index 9fceef8e..a649fc41 100644 --- a/VDS/Components/RadioBox/RadioBox.swift +++ b/VDS/Components/RadioBox/RadioBox.swift @@ -163,7 +163,7 @@ open class RadioBoxBase: Control, Changable mainStackView.leadingAnchor.constraint(equalTo: selectorView.leadingAnchor, constant: 16).isActive = true mainStackView.trailingAnchor.constraint(equalTo: selectorView.trailingAnchor, constant: -16).isActive = true mainStackView.bottomAnchor.constraint(equalTo: selectorView.bottomAnchor, constant: -16).isActive = true - + } func updateLabels(_ viewModel: ModelType) { @@ -329,17 +329,30 @@ open class RadioBoxBase: Control, Changable let borderColor = radioBoxBorderColorConfiguration.getColor(viewModel) let borderWidth = viewModel.selected ? selectorBorderWidthSelected : selectorBorderWidth + selectorView.backgroundColor = backgroundColor + selectorView.layer.borderColor = borderColor.cgColor + selectorView.layer.cornerRadius = selectorCornerRadius + selectorView.layer.borderWidth = borderWidth + + setNeedsDisplay() + } + + open override func layoutSubviews() { + super.layoutSubviews() + // Accounts for any size changes + layer.setNeedsDisplay() + } + + open override func draw(_ layer: CALayer, in ctx: CGContext) { + + let borderColor = radioBoxBorderColorConfiguration.getColor(model) + if let shapeLayer = shapeLayer, let sublayers = layer.sublayers, sublayers.contains(shapeLayer) { shapeLayer.removeFromSuperlayer() self.shapeLayer = nil } - selectorView.backgroundColor = backgroundColor - selectorView.layer.borderColor = borderColor.cgColor - selectorView.layer.cornerRadius = selectorCornerRadius - selectorView.layer.borderWidth = borderWidth - - if shapeLayer == nil && viewModel.strikethrough { + if shapeLayer == nil && model.strikethrough { let bounds = selectorView.bounds let length = max(bounds.size.height, bounds.size.width) guard length > 0.0, shapeLayer == nil else { return } @@ -360,7 +373,6 @@ open class RadioBoxBase: Control, Changable shapeLayer = border layer.addSublayer(border) } - } //--------------------------------------------------