Ограничения для центра и объекта между двумя объектами

Для моего дизайна требуется, чтобы кнопка была центрирована между двумя другими объектами. Один из объектов находится в вертикальном центре представления (зеленый). Другой объект находится на некотором расстоянии от нижнего края (зеленый). Теперь задача состоит в том, чтобы центрировать третий объект (красный) между двумя другими. Я использую новые ограничения xcode6, и мое представление находится в режиме wRegular hRegular. Это было бы легко с кодом, но я пытаюсь использовать раскадровку, чтобы выполнить это.

enter image description here

Ответ 1

Существует несколько подходов:

  • В iOS 9 самым простым было бы определить вертикальный UIStackedView с distribution равного расстояния, а затем addArrangedSubview три круговых подсмотра

  • Другим вариантом в iOS 9 будет создание двух UILayoutGuide (которые будут представлять две вопросительные знаки на вашем изображении), добавьте их в общий супервизор с помощью addLayoutGuide и определите их как один размер как друг друга. Соответствующий VFL может выглядеть так:

    "V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|"
    
  • В более ранних версиях iOS вместо использования UILayoutGuide вы могли бы просто создать два "пространственных" вида (UIView с четким фоном, чтобы они не были видны), затем определите ограничение, чтобы их высоты были идентичны, а затем определяют ограничения вертикального интервала между пятью представлениями (три круга и два представления спейсера) с постоянной нуля.

    Это может выглядеть так:

    IB scene

    Я сделал эти "spacer" взгляды видимыми, чтобы проиллюстрировать эту идею, но, очевидно, вы бы установили их прозрачными, чтобы вы не могли видеть их в пользовательском интерфейсе.

    Это логически эквивалентно подходу UILayoutGuide в iOS 9, за исключением того, что представления UIView "spacer" просто несут накладные расходы, а не UILayoutGuide. Но в версиях iOS до 9 это общий подход к этой проблеме.

Ответ 2

Я придумал самый простой подход.

вновь добавленное представление имеет синий цвет, а в моем случае ярлык должен быть в центре

Выполните следующие действия:

  • добавить между ними два круга
  • добавить свое конечное и ведущее пространство. (в моем случае нуль для наблюдения)
  • добавить верхнее и нижнее пространство из кругов.
  • теперь добавьте свой красный круг в недавно добавленный вид
  • сделайте это по горизонтали и вертикали в центре меню индикации

alignment