UILabel изменение длинны Background'a

Доброго времени суток друзья
Мне нужна ваша помощь в решении поставленной задачи, ломаю голову уже третьи сутки и никак не могу понять причину такого поведения программы
Задача такова:
- В ViewController есть UILabel который в зависимости от некоторых условий должен менять текст и грубо говоря размер background'a (далее фон) в зависмости от размера текста. Я реализовал метод по которому он меняет текст, цвет фона, и ширину самой UILabel. Проблема состоит в том, что когда я в симуляторе ввожу не правильный ответ он выводит текс с нужной длинной фона, дальше ввожу правильный ответ и он выводит опять же текст с нужной длинной, но если я третий раз введу не правильный ответ, то длинна UILabel будет не правльно и меньше чем была. И соотвественно задача состоит в том, чтобы он всегда выводил правильную длинну фона.
Для этого всего я нашел свойство yourUILabel.intrinsicContentSize.width и записывал его в constraint. Но видимо либо я что-то не так делаю, либо такое свойство мне не подходит. Делаю это просто для развития мышления и набивания опыта в программировании
Вот сама реализация:
@IBAction func checkLogPass(_ sender: Any) {
showSuccessText(loginText.text == "admin" && passwordText.text == "password")
}
func showSuccessText(_ result: Bool) -> Void {
if result {
successLogin.text = "Вы успешно вошли" // Меняем текст
successLogin.backgroundColor = #colorLiteral(red: 0.489998877, green: 1, blue: 0.4757936597, alpha: 1)
} else {
successLogin.text = "Логин или пароль неверные" // Меняем текст
successLogin.backgroundColor = #colorLiteral(red: 1, green: 0.4132156074, blue: 0.3885126114, alpha: 1)
}
changeConstant()
if successLogin.isHidden { successLogin.isHidden = false }
}
func changeConstant() {
constWidth.constant = successLogin.intrinsicContentSize.width + CGFloat(10)
}
А вот так выглядит сам баг:
Первый ввод ответа:
https://ibb.co/dcQmzJ5
Второй ввод ответа:
https://ibb.co/4N3RDPg
Третий ввод ответа:
https://ibb.co/TtcQVMC
Четвертый ввод ответа:
https://ibb.co/PhWv4vX