Как разделить view на 3 равные части в swift?

Пользователь

от jose , в категории: Swift , год назад

Как разделить view на 3 равные части в swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jerrold_langworth , год назад

@jose 

Используя автолейауты, вы можете разделить представление на 3 равные части следующим образом:

  1. Создайте 3 UIViews в вашем представлении
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. Определите правила ограничений для каждой UIView, используя метод NSLayoutConstraint. Например, вы можете использовать следующий код:
 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 отображаемой области, с отступом между каждым из них.