Ho due UILabels incorporati in un UIStackView. L'etichetta superiore rimane visibile costantemente, ma l'etichetta inferiore viene attivata e disattivata tramite la proprietà hidden
. Ho voluto questo effetto di essere animato, così ho bloccato in un blocco di animazione:La proprietà nascosta non può essere modificata all'interno di un blocco di animazione
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
}
}
}
Il problema è che la proprietà nascosto non cambierà a meno che ripeto la dichiarazione più e più volte (3 volte in questo caso). Ho trovato questo mentre irrompevo nella chiusura dell'animazione e vedevo che la proprietà non sarebbe cambiata al suo compito. Ora sto notando lo stesso problema che si verifica di nuovo in modo apparentemente casuale. Il valore predefinito della seconda etichetta è true
, se pertinente.
C'è qualcosa che mi manca qui, o si tratta di un bug?
Aggiornamento: Per quel che vale, ho ottenuto lavorando con l'aggiunta di removeArrangedSubview()
e 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
}
}
Il valore che non cambia è strano, ma ad ogni modo per animare l'etichetta è necessario modificare il valore 'alpha' della vista e non' hidden'. AFAIK, 'hidden' non è animabile. –
Grazie a @GuillaumeAlgis! Potrei provare a cambiare l'alfa, ma non penso che riorganizzerà lo StackView poiché è solo invisibile e rimosso. La proprietà nascosta è animabile e funziona il 95% delle volte. Per riferimento ho usato la sezione in fondo alla pagina: [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
Hmm se ho capito bene il documento, questo è un comportamento specifico di 'UIStackView'. Al di fuori di questo caso speciale 'hidden' non sarà animato. Stai usando un 'UIStackView'? –