Есть ли способ, которым я могу центрировать ограничение y по центру Label, чтобы оно находилось прямо между нижним ящиком панели инструментов и верхним якорем кнопки?
Да, есть. Простой способ - использовать прозрачный вид распорки, верхняя часть которого прикреплена к верхнему якору, а нижняя - к нижнему. Теперь вы прикрепите ярлык по центру к центру вида распорки.
Однако, хотя это и просто, это не лучший способ. Лучший способ - создать вместо прозрачного спейсера пользовательский UILayoutGuide . К сожалению, это может быть сделано только в коде, а не в раскадровке (тогда как вид разделителя и метка могут быть полностью сконфигурированы в раскадровке). Но у него есть то преимущество, что оно не обременяет дерево рендеринга дополнительным представлением.
Вот ваша ситуация, более или менее, используя кнопку в качестве верхнего вида и кнопку в качестве нижнего вида. Ярлык по центру между ними:
Вот код, который создал эту ситуацию. b1
и b2
- кнопки (и не важно, как они создаются и располагаются):
let g = UILayoutGuide()
self.view.addLayoutGuide(g)
g.topAnchor.constraint(equalTo: b1.bottomAnchor).isActive = true
g.bottomAnchor.constraint(equalTo: b2.topAnchor).isActive = true
g.leadingAnchor.constraint(equalTo:b1.leadingAnchor).isActive = true
g.trailingAnchor.constraint(equalTo:b1.trailingAnchor).isActive = true
let lab = UILabel()
lab.text = "Label"
lab.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(lab)
lab.leadingAnchor.constraint(equalTo:g.leadingAnchor).isActive = true
lab.centerYAnchor.constraint(equalTo:g.centerYAnchor).isActive = true