У меня есть два 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
, если это необходимо.
Есть ли что-то, что мне здесь не хватает, или это ошибка?
Update: Для чего это стоит, я получил это работает, добавив 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
}
}
Значение, которое не меняется, является странным, но в любом случае для анимации вашей метки вы должны изменить значение 'alpha', а не' hidden'. AFAIK, 'hidden' не анимативна. –
Спасибо @GuillaumeAlgis! Я мог бы попробовать изменить альфа, но я не думаю, что он изменит StackView, поскольку он будет невидимым и удаленным. Скрытое свойство анимативно и работает в 95% случаев. Для справки я использовал раздел в нижней части страницы: [https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UIStackView_Class_Reference/index.html](https://developer.apple .com/library/prerelease/tvos/documentation/UIKit/Reference/UIStackView_Class_Reference/index.html) – Alex
Хм, если я правильно понимаю документ, это конкретное поведение 'UIStackView'. Вне этого специального случая «скрытый» не будет анимироваться. Используете ли вы 'UIStackView'? –