Полагаю, вы хотите что-то вроде этого:
![demo](https://i.stack.imgur.com/YIzYs.gif)
Один из способов перестановки четырех подпредставлений из столбца в сетку 2x2 - использование стековых представлений. Создайте вертикальный вид стека для двухэлементного столбца сетки 2x2 и поместите эти два стека в горизонтальный вид. Затем, чтобы превратить сетку в один столбец, вы устанавливаете вертикальную ось горизонтального вида стека.
Вот моя раскадровка:
![storyboard](https://i.stack.imgur.com/pK9Za.png)
А вот мой контроллер вида:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
updateViews()
}
@IBOutlet var segmentedControl: UISegmentedControl!
@IBOutlet var rearrangingStackView: UIStackView!
@IBAction func segmentedControlValueChanged(_ sender: Any) {
UIView.animate(withDuration: 0.25) {
self.updateViews()
self.view.layoutIfNeeded()
}
}
private func updateViews() {
if segmentedControl.selectedSegmentIndex == 0 {
rearrangingStackView.axis = .vertical
} else {
rearrangingStackView.axis = .horizontal
}
}
}