gpt4 book ai didi

swift - 无法从 `UIStackView` 中删除轴动画

转载 作者:行者123 更新时间:2023-11-30 12:33:22 24 4
gpt4 key购买 nike

我在界面构建器中构建了一个 UIStackView ,当它的 axis 属性从 vertical 更改为 horizo​​ntal super View 从纵向旋转为横向。问题是,这会导致两个排列的 subview 的动画,其中一个 View 在过渡到新位置时与另一个 View 重叠。

就我而言,我只想删除特定的动画并立即强制 View 到达其结束位置。

我尝试从 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 属性更改时,我观察到了动画键,因为这似乎发生在转换期间的某个地方(由界面构建器自动设置)。不幸的是我没有运气,因为该层为 stackview 及其 subview /arrangedSubviews 上的 animationKeys 返回 nil

class StackView : UIStackView {

override var axis: UILayoutConstraintAxis {

didSet { /* here */ }
}
}

最佳答案

我认为这将具有挑战性。有一个很好的演示,说明您正在尝试做什么 over here如果它显示的轴动画是您想要摆脱的内容,那么很确定它超出了 UIStackView 设计空间。

非常确定“立即强制 View 到其最终位置”的最佳解决方案实际上是为每个轴提供一个 UIStackView 并在旋转时在它们之间移动内容。

您还可以尝试在 viewWillTransition(to:with:) 中放置一个 performWithoutAnimation block ,在完成时调用 updateConstraintsIfNeeded ?也许那会起作用。不过,我会选择双 View 的想法,而不是那样!

关于swift - 无法从 `UIStackView` 中删除轴动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43165601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com