В 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
Надеюсь это поможет.:)