在Swift中拉伸UIView

时间:2019-01-23 13:54:18

标签: ios swift uiview

因此,我有两个视图和一个按钮,其中一个视图隐藏在“ View1”中,另一个视图不是“ View2”,一旦单击按钮“ View1”将出现,但我希望“ View2”进入向下,我将添加图像以显示我想做什么

enter image description here

2 个答案:

答案 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高度限制,以便可以推断其子视图的总和高度。