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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от 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 отображаемой области, с отступом между каждым из них.

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

от enid , 5 месяцев назад

@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 в вашем представлении, каждая занимая одну треть высоты представления.