@jose
Используя автолейауты, вы можете разделить представление на 3 равные части следующим образом:
1 2 3 4 5 6 7 |
let view1 = UIView() let view2 = UIView() let view3 = UIView() view.addSubview(view1) view.addSubview(view2) view.addSubview(view3) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
let margin: CGFloat = 20 view1.translatesAutoresizingMaskIntoConstraints = false view1.topAnchor.constraint(equalTo: view.topAnchor, constant: margin).isActive = true view1.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/3, constant: -2*margin/3).isActive = true view1.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: margin).isActive = true view1.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -margin).isActive = true view2.translatesAutoresizingMaskIntoConstraints = false view2.topAnchor.constraint(equalTo: view1.bottomAnchor, constant: margin/3).isActive = true view2.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/3, constant: -2*margin/3).isActive = true view2.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: margin).isActive = true view2.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -margin).isActive = true view3.translatesAutoresizingMaskIntoConstraints = false view3.topAnchor.constraint(equalTo: view2.bottomAnchor, constant: margin/3).isActive = true view3.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/3, constant: -2*margin/3).isActive = true view3.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: margin).isActive = true view3.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -margin).isActive = true |
Задайте отступ между каждой UIView, учитывая, что первый и последний вид должны иметь на один меньше (в этом примере 20/3 = 6.67):
1 2 3 4 5 6 7 8 9 |
let margin: CGFloat = 20 // ... view2.topAnchor.constraint(equalTo: view1.bottomAnchor, constant: margin/3) // ... view3.topAnchor.constraint(equalTo: view2.bottomAnchor, constant: margin/3) |
Это создаст три равных UIViews в вашем представлении, которые будут занимать по 1/3 отображаемой области, с отступом между каждым из них.
@jose
Для того чтобы разделить представление на три равные части в Swift вам необходимо использовать Auto Layout и определить ограничения для каждого из трех UIView. Вот пример кода, который это делает:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
let view1 = UIView() let view2 = UIView() let view3 = UIView() view.addSubview(view1) view.addSubview(view2) view.addSubview(view3) view1.translatesAutoresizingMaskIntoConstraints = false view2.translatesAutoresizingMaskIntoConstraints = false view3.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ // Размещаем первую UIView в верхней трети представления view1.topAnchor.constraint(equalTo: view.topAnchor), view1.leadingAnchor.constraint(equalTo: view.leadingAnchor), view1.trailingAnchor.constraint(equalTo: view.trailingAnchor), view1.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/3), // Размещаем вторую UIView между первой и третьей UIView view2.topAnchor.constraint(equalTo: view1.bottomAnchor), view2.leadingAnchor.constraint(equalTo: view.leadingAnchor), view2.trailingAnchor.constraint(equalTo: view.trailingAnchor), view2.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/3), // Размещаем третью UIView в нижней трети представления view3.topAnchor.constraint(equalTo: view2.bottomAnchor), view3.leadingAnchor.constraint(equalTo: view.leadingAnchor), view3.trailingAnchor.constraint(equalTo: view.trailingAnchor), view3.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/3) ]) |
Этот код разместит три UIView в вашем представлении, каждая занимая одну треть высоты представления.