Ограничения к центру и объекту между двумя объектами
Мой дизайн требует, чтобы кнопка была в центре между двумя другими объектами. Один из объектов находится в вертикальном центре вида (зеленый). Другой объект находится на некотором расстоянии от нижнего края (зеленый). Теперь задача состоит в том, чтобы центрировать третий объект (красный) между двумя другими. Я использую новые ограничения xcode6, и мой взгляд находится в режиме wRegular hRegular. Это было бы легко с кодом, но я пытаюсь использовать раскадровку для достижения этой цели.
2 ответа
Есть несколько подходов:
В iOS 9 проще всего было бы определить вертикаль
UIStackedView
сdistribution
"равного расстояния", а затемaddArrangedSubview
три круглых подпредставленияДругим вариантом в iOS 9 будет создание двух
UILayoutGuide
(который будет представлять два знака вопроса на вашем изображении), добавьте их в общий супервизор сaddLayoutGuide
и определите, чтобы они были одинакового размера друг с другом. Соответствующий VFL может выглядеть так:"V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|"
В более ранних версиях iOS, вместо того, чтобы использовать
UILayoutGuide
Вы можете просто создать два "космических" вида (UIView
с чистым фоном, чтобы они не были видны), затем определите ограничение таким образом, чтобы их высота была одинаковой, а затем определите вертикальные ограничения на расстояние между пятью видами (три круга и два вида распорок) с постоянной нуля.Это может выглядеть так:
Я сделал эти "проставочные" виды видимыми, чтобы проиллюстрировать идею, но, очевидно, вы установили прозрачность, чтобы не видеть их в пользовательском интерфейсе.
Это логически эквивалентно
UILayoutGuide
подход в iOS 9, за исключением того, чтоUIView
"Проставочные" виды просто несут немного больше, чемUILayoutGuide
, Но в версиях iOS до 9, это общий подход к этой проблеме.
Я придумал самый простой подход.
Просто следуйте этим шагам:
- добавить вид между ними два круга
- добавьте его завершающий и ведущий пробел. (в моем случае ноль к суперпредставлению)
- добавить сверху и снизу пространство от кругов.
- теперь поместите ваш красный круг в недавно добавленное представление
- сделать его горизонтально и вертикально по центру из меню Alrignment