Ich habe eine UIStackView
Build in Interface Builder zu entfernen, die es axis
Eigenschaft vertical
-horizontal
ändert sich, wenn es Super von Hoch- auf Querformat dreht. Das Problem ist, dass dies zu einer Animation der beiden angeordneten Unteransichten führt, wobei eine dieser Ansichten die andere Ansicht überlappt, während sie an die neue Position übergeht.Unable Achse Animation von `UIStackView`
In meinem Fall möchte ich nur diese bestimmte Animation entfernen und die Ansicht sofort auf ihre Endposition zwingen.
Ich habe versucht, alle Animationen auf der stackview Schicht in meinem VC zu entfernen:
public override func willTransition(to newCollection: UITraitCollection,
with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: {
_ in
// The first subview is `UIStackView`
self.view.subviews[0].layer.removeAllAnimations()
})
super.willTransition(to: newCollection, with: coordinator)
}
Und ich beobachtete den Animations-Keys, wenn die axis
Eigenschaft geändert wird, denn das ist irgendwo während des Übergangs zu passieren scheint (wird automatisch vom Interface Builder gesetzt). Leider hatte ich kein Glück damit, da der Layer nil
für animationKeys
auf der Stackview und seinen Subviews/arrangedSubviews zurückgibt.
class StackView : UIStackView {
override var axis: UILayoutConstraintAxis {
didSet { /* here */ }
}
}