Ich habe zwei UILabels in einem UIStackView eingebettet. Das obere Etikett bleibt ständig sichtbar, aber das untere Etikett wird über die Eigenschaft hidden
ein- und ausgeschaltet. Ich wollte diesen Effekt werden animiert, so dass ich steckte es in einem Animationsblock:Versteckte Eigenschaft kann nicht innerhalb eines Animationsblocks geändert werden
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
}
}
}
Das Problem ist, dass die verborgene Eigenschaft wird sich nicht ändern, es sei denn ich die Aussage über und über (3-mal in diesem Fall) zu wiederholen. Ich fand dies, während ich in den Animationsabschluss einbrach und sah, dass sich die Eigenschaft nicht zu ihrer Zuweisung änderte. Jetzt stelle ich fest, dass das gleiche Problem scheinbar zufällig wieder auftritt. Der Standardwert des zweiten Labels ist true
, wenn das relevant ist.
Gibt es etwas, das mir hier fehlt, oder ist das ein Fehler?
aktualisieren: Für das, was es wert ist, habe ich es von removeArrangedSubview()
und addArrangedSubview()
Arbeits Zugabe:
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
}
}
Der Wert, der sich nicht ändert, ist seltsam, aber um Ihr Label zu animieren, sollten Sie den Alpha-Wert der Ansicht ändern und nicht "versteckt". AFAIK, "versteckt" ist nicht animierbar. –
Danke @GuillaumeAlgis! Ich könnte versuchen, das Alpha zu ändern, aber ich denke nicht, dass es das StackView neu arrangieren wird, da es nur unsichtbar ist und entfernt wird. Die versteckte Eigenschaft ist animierbar und funktioniert in 95% der Fälle. Als Referenz habe ich den Abschnitt unten auf der Seite verwendet: [https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UIStackView_Class_Reference/index.html](https://developer.apple UMSatz/Referenz/UIStackView_Class_Reference/index.html) – Alex
Hmm, wenn ich das Dokument richtig verstehe, ist dies ein bestimmtes Verhalten von 'UIStackView'. Außerhalb dieses speziellen Falls wird "versteckt" nicht animiert. Verwenden Sie ein 'UIStackView'? –