В Swift, как использовать Layout Anchor, чтобы установить несколько подпредставлений, чтобы иметь одинаковую ширину (без константы)?

Например, у меня есть родительское представление, которое содержит 3 подпредставления. Я использую Layout Anchor программно и пытаюсь добиться следующего макета

|--subview 1--|--subview 2--|--subview 3--|

Каждое из трех подпредставлений имеет равную ширину. Другими словами,

subView1.width = subView2.width = subView3.width subView1.width + subView2.width + subView3.width = parentView.width

Я знаю, что могу использовать множитель, чтобы установить ширину для subView 1 и subView 2 как:

subView1.widthAnchor.constraintEqualToAnchor(contentView.widthAnchor, multiplier: 1/3).active = true
subView2.widthAnchor.constraintEqualToAnchor(contentView.widthAnchor, multiplier: 1/3).active = true

и subView3 может иметь ведущую привязку для выравнивания с конечной привязкой subView2.

Однако я где-то видел, что Интерфейсный Разработчик может фактически назначить эти три ширины, чтобы быть равными непосредственно (без использования константы или множителя). Можно ли сделать то же самое с Layout Anchor программно? И как? Благодарю.

1 ответ

Решение

Вот полный набор якорей (я пробовал себя, и это работает):

// Create subView1
let subView1 = UIView()
subView1.backgroundColor = UIColor.redColor()
subView1.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView1)

// Create subView2
let subView2 = UIView()
subView2.backgroundColor = UIColor.blueColor()
subView2.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView2)

// Create subView3
let subView3 = UIView()
subView3.backgroundColor = UIColor.greenColor()
subView3.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView3)

subView1.leadingAnchor.constraintEqualToAnchor(contentView.leadingAnchor).active = true
subView1.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView1.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true

subView2.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView2.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true

subView3.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView3.trailingAnchor.constraintEqualToAnchor(contentView.trailingAnchor).active = true
subView3.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true

subView1.trailingAnchor.constraintEqualToAnchor(subView2.leadingAnchor).active = true
subView2.trailingAnchor.constraintEqualToAnchor(subView3.leadingAnchor).active = true

// Add equal width anchors
subView1.widthAnchor.constraintEqualToAnchor(subView2.widthAnchor).active = true
subView2.widthAnchor.constraintEqualToAnchor(subView3.widthAnchor).active = true

Надеюсь это поможет.:)

Другие вопросы по тегам