Растяжка UIView в Swift - PullRequest
       18

Растяжка UIView в Swift

0 голосов
/ 23 января 2019

Таким образом, у меня есть два вида и кнопка, одна из которых является скрытой «View1», а другая не «View2», и как только я нажимаю на кнопку, «View1» появится, но я хочу, чтобы «View2» пошел вниз, я добавлю изображение, чтобы показать, что я хочу сделать

enter image description here

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Мы можем использовать класс UIStackView для этого с легкостью.Мы можем добавить оба представления в экземпляр UIStackView с осью vertical.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 не следует задавать ограничение по высоте, чтобы у него была предполагаемая высота суммирования его подпредставлений.

0 голосов
/ 23 января 2019

Грубый путь, если ваши представления имеют фиксированные размеры:

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 установите альфа-представление представления в 0 и позиции

view1.alpha = 0
view2.alpha = 0
view1.center = view1Center
view2.center = view2CenterBefore

3, Когда вы нажимаете кнопку, вы должны анимировать ходы и показать представление1.

@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
     }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...