インターフェイスビルダーにプロパティをvertical
からhorizontal
に変更しました。問題は、2つの配置されたサブビューのアニメーションが生成され、そのうちの1つのビューが新しい位置に遷移している間に他のビューと重なり合うということです。`UIStackView`から軸アニメーションを取り除くことができません
私の場合は、特定のアニメーションだけを削除し、すぐに終了位置に表示するようにしたいと考えています。
私は私のVCでstackview層から上のすべてのアニメーションを削除しようとしています
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)
}
そしてaxis
プロパティが変更された場合には、(移行の間のどこかで発生するようですので、私は、アニメーションキーを観測しましたインタフェースビルダーによって自動的に設定されます)。残念ながら、レイヤーはanimationKeys
のnil
をスタックビューとそのサブビュー/ arrangedSubviewsに返すので、私はそれに運が無かった。
class StackView : UIStackView {
override var axis: UILayoutConstraintAxis {
didSet { /* here */ }
}
}