У меня есть два UILabels, встроенных в UIStackView. Верхняя метка остается видимой постоянно, но нижняя метка включается и выключается через свойство hidden
. Я хотел, чтобы этот эффект был анимированным, поэтому я застрял в блоке анимации:
private func toggleResultLabel(value:Double) {
if value == 0 {
UIView.animateWithDuration(0.25) { () -> Void in
self.resultLabel.hidden = true
}
} else {
UIView.animateWithDuration(0.25) { () -> Void in
// Something weird is happening. I had to add 3 of the same statements to get
// the hidden flag to be false
self.resultLabel.hidden = false
self.resultLabel.hidden = false
self.resultLabel.hidden = false
}
}
}
Проблема заключается в том, что скрытое свойство не изменится, если я повторяю утверждение снова и снова (в этом случае 3 раза). Я нашел это, когда вломился в закрытие анимации и увидел, что свойство не изменит его назначение. Теперь я замечаю ту же проблему, которая кажется случайно случайной. Значением по умолчанию для второй метки является true
, если это необходимо.
Есть ли что-то, что мне здесь не хватает, или это ошибка?
Обновление:
Для чего это стоит, я получил его работу, добавив removeArrangedSubview()
и addArrangedSubview()
:
if value == 0 {
UIView.animateWithDuration(0.25) { () -> Void in
self.resultLabel.hidden = true
self.heroStackView.removeArrangedSubview(self.resultLabel)
}
} else {
UIView.animateWithDuration(0.25) { () -> Void in
self.heroStackView.addArrangedSubview(self.resultLabel)
self.resultLabel.hidden = false
}
}