2016-05-14 3 views
1

У меня есть два UIView с размером фиксированного размера (30, 30), я хочу, чтобы в горизонтальном центре отображались точки обзора. вот описание макета.Почему это ограничение макета не может удовлетворить?

H:[view1(30)]-20-[view2(30)] 
V:|-20-[view1(30)] 
V:|-20-[view2(30)] 

и добавить ограничение на горизонтальной
view1.leftMargin = view2.rightMargin

Но эти ограничения не работают, как мой ожидать.
предупреждение о времени выполнения говорит, что не может одновременно не удовлетворять ограничениям. Зачем?

Я нахожу решение для центрирования представлений, которые добавляют два вида заполнителя в левой и правой частях, но я хочу знать, почему мое первое решение не работает, как узнать мои ограничения? Что я упустил?

+0

вертикальной или горизонтальной или оба? – Alok

+0

@Alok горизонтальный, извините, я изменил вопрос. – ZHENGYING

+0

k спасибо за обновление, я сомневаюсь в H: | [view1 (30)] - 20- [view2 (30)] |. Пожалуйста, сделайте это как H: [view1 (30)] - 20- [view2 (30)] и удалите view1.left = view2.right – Alok

ответ

0

view1.left=view2.right и [view1(30)]-20-[view2(30)] является конфликтогенным. [view1(30)]-20-[view2(30)] означает

view1.right+20=view2.left 
view1.height=30,view2.height=30 

так яблоко не может сделать constrainsts.

+0

спасибо!, но я не знаю, почему 'view1.right + 20 = view2.left' и' view1.left = view2.right' конфликт? – ZHENGYING

+0

Этот очевидный конфликт. view1.left = view2.right view1.right = view1.left + 30 view2.left = view2.right-30.so вы можете знать view1.left + 30 + 20 = view2.right + 30. confict view1.left = view.right – xks

+0

К сожалению, моим последним ограничением является 'view1.leftMargin = view2.rightMargin', а не' view1.left = view2.right', можете ли вы дать анализ для этой ситуации? – ZHENGYING

0

Я попытался решить вашу проблему и узнать, что с помощью VFL единственный возможный способ для централизованного просмотра в супер-представлении - это простейшие представления.

Как вы определили свои view1 и view2, также определите два spacer views.

Затем просто вставьте:

V:|-20-[view1(30)] 
V:|-20-[view2(30)] 
H:|[spacer1][view1(30)]-20-[view2(30)][spacer1(==spacer2)]| 

И не нужно view1.left = view2.right. Удалите его.

Выход прилагается:
enter image description here

+0

Спасибо за ваше правильное решение, но я знал это решение, просто хочу знать, почему конфликтуют мои решения. почему бы не удовлетворить. как это знать? – ZHENGYING

Смежные вопросы