答案 0 :(得分:0)
粗略的方式,如果您的视图具有固定大小:
1,为视图的位置创建3个变量
var view1Center: CGPoint = CGPoint(x: 100, y: 100)
var view2CenterBefore: CGPoint = CGPoint(x: 100, y: 100)
var view2CenterAfter: CGPoint = CGPoint(x: 100, y: 400)
2,在ViewDidLoad或ViewDidAppear中,将视图的Alpha设置为0,并将位置设置为
view1.alpha = 0
view2.alpha = 0
view1.center = view1Center
view2.center = view2CenterBefore
3,当您按下按钮时,应为移动设置动画并显示view1。
@IBAction func showView1(_ sender: Any) {
UIView.animate(withDuration: 0.5, animations: {
view2.center = view2CenterAfter
})
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
UIView.animate(withDuration: 0.5, animatios: {
view1.alpha = 1
}
}
}
答案 1 :(得分:0)
我们可以轻松使用UIStackView
类。我们可以将两个视图添加到带有vertical
轴的UIStackView实例中。 view1
高度应具有最高约束优先级(999),而不是必需(1000)。这样,当隐藏view1时,它的高度约束不会发生冲突。
您可以参考以下代码段:
let stack = UIStackView()
// aligns subviews in top to bottom manner
stack.axis = .vertical
stack.addArrangedSubview(view1)
stack.addArrangedSubview(view2)
当view1
隐藏时,view2
将自动向上移动。不应该给StackView高度限制,以便可以推断其子视图的总和高度。