UIStackView Ausblenden, Ansicht-Animation
In iOS 11, das Verhalten der hide-animation im UIStackView
geändert hat, aber ich war nicht in der Lage zu finden, das dokumentiert irgendwo.
iOS 10
iOS-11
Den code in beiden ist dieses:
UIView.animate(withDuration: DiscoverHeaderView.animationDuration,
delay: 0.0,
usingSpringWithDamping: 0.9,
initialSpringVelocity: 1,
options: [],
animations: {
clear.isHidden = hideClear
useMyLocation.isHidden = hideLocation
},
completion: nil)
Wie kann ich wieder das Vorherige Verhalten, die auf iOS-11?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte gerade das gleiche Problem.
Das Update ist das hinzufügen
stackView.layoutIfNeeded()
im inneren der animation-block. WostackView
ist der container der Artikel, die Sie wollen, zu verbergen.Nicht sicher, warum dies plötzlich ein Problem in iOS 11, aber um fair zu sein es war schon immer die empfohlene Vorgehensweise.
hidden
Eigenschaft einesUIStackView
'ssubview
im Animations-block wurde ignoriert, in einigen Fällen, so der beste Weg ist, um es zu ändern außerhalb, direkt vor der animation.view.layoutIfNeeded()
ist besser alsstackView.layoutIfNeeded()
view.layoutIfNeeded()
würde zu aktualisieren, die position der anderen Ansichten in der StackView das ist, was wir wollen. developer.apple.com/documentation/uikit/uiview/...layoutIfNeeded()
für die direktesuperview
der animierte Blick auf diestackView
hier.setNeedsLayout
vorlayoutIfNeeded
ich bin mit ohne Problem.Swift 4-Erweiterung:
self.isHidden
und nicht den Wert einzustellen, wenn schon die gleichen.Möchte ich diese Funktion, das ist gut für das verstecken und das zeigen viele Ansichten in
UIStackView
, denn mit all den code, den ich verwendet, bevor nicht die Arbeit glatt, da muss man removeAnimation aus einigen Schichten: