Ваш метод переключения цвета обводки слоя формы правильный:
Все, что я делаю, это:
var enabled = false
@IBAction func didTapButton(_ sender: Any) {
enabled = !enabled
hexBorderOtline.strokeColor = enabled ? activeBorderColor.cgColor : inActiveBorderColor.cgColor
}
Итак, ваша проблема лежит в другом месте.Например:
Возможно, у вас есть другой слой фигуры, который находится поверх слоя, для которого вы меняете цвет.
Или, возможно, ваш ивар указывает на другой слой формы.
Или, возможно, ваша кнопка не подключена к вашей btnAction
процедуре (отсутствие каких-либо @IBAction
или @objc
заставляет меня подозревать, что вы не вызываете эту процедуру),
Это будет нечто простое.
Я бы предложил добавить print(hexBorderOtline)
, где вы создаете CAShapeLayer
, и снова в btnAction
и подтвердите, что оба:
Вы видите оба набора print
операторов;и
Они печатают один и тот же адрес памяти, связанный со слоем формы (т.е. убедитесь, что они ссылаются на один и тот же слой формы).
Но это должно быть что-то подобное.Это правильный способ изменить strokeColor
, который автоматически обновит слой формы.Ваша проблема лежит в другом месте.