【发布时间】:2019-05-01 13:01:44
【问题描述】:
我有一个水平的 UIStackView 包含几个排列的子视图。
我想在用户单击按钮时删除一个排列好的子视图(我们称之为 A),但在此之前我想做一个快速动画。我想做自己的动画,所以我不能只为 stackView.removeArrangedSubview 制作动画,它会做一个默认的基本动画,而不是我想要的特殊动画。
在 A 中,我有另一个使用自动布局的 centeredX 和 centeredY 视图(我们称之为 B)。
当我将 ArrangeSubview A 的 A.widthAnchor.constant 设置为 0 时,其他 arrangedsubviews 逐渐取代它,孩子 B 在动画其 CenterX 之前丢失并向左移动。或者也许它不会丢失centerX,但它在一个小A(宽度= 0,从左侧开始)上的centeredX,但A不应该立即将其宽度变为0,而是在动画完成之后...... .
我尽我所能解释清楚,但我知道这可能会造成混淆。这是显示问题的视频。在动画开始之前,位于arrangedsubview A(占据所有屏幕)中的图像(B)在左侧“跳跃”。
https://drive.google.com/open?id=1nTDRe5zirbuQi86WVBTuU-iDU8aq0lcw
这是我制作这个动画的非常简单的代码:
UIView.animate(withDuration:4,delay:0, options:.curveEaseInOut, animations : {
self.c.constant = 0 // c is A.widthAnchor constraint
self.stackView.layoutIfNeeded()
},completion: { _ in
// done
})
【问题讨论】:
-
试试这样 self.c.constant = 0 UIView.animate(withDuration:0.3,delay:0, options:.curveEaseInOut, animations : { self.stackView.layoutIfNeeded() },completion: { _ in // 完成 })
-
已经做了,但不起作用:/
标签: ios swift animation uistackview