Не путайте фрейм и автоматическое расположение вида, оба ведут себя по-разному.
Вам нужно сделать что-то вроде следующего.
Ограничения для вида A
- CenterX и CenterY
- (высота или ширина) и соотношение сторон 1: 1 (означает равную ширину и равную высоту)
Ограничения для viewB
- Передний, задний, верхний и нижний к его суперпредставлению (т.е. viewA)
Теперь вам нужно создать@IBOutlet
к ограничению, которое необходимо изменить (для viewA).
@IBOutlet weak var const_height_viewA: NSLayoutConstraints!
Поэтому при нажатии кнопки необходимо изменить только константу ограничения.
@IBAction func buttonAction(_ sender: Any) {
const_height_viewA.constant = 250
//changing height constraint of viewA will automatically updates viewB frame.
}
Примечание:Нет необходимости изменять ограничения viewB, так как он будет автоматически корректироваться с учетом заданных ограничений.
Для наглядности