it-roy-ru.com

Неравенство Ограничение Неоднозначность

у меня проблема с изменением размера UIView с Autolayout и ограничений. Я хотел бы изменить происхождение (меньше или равно оригиналу) и ширину (больше или равно оригиналу), но я получил это: Неравенство Ограничение Неоднозначность

У вас есть идея, чтобы решить это?

спасибо

view error

constraints error

20
Luca T

Я пытался уменьшить более чем 1 ограничение по вертикали для 3,5-дюймовых дисплеев, поэтому мне пришлось сделать 2 ограничения между компонентами, которые я хотел уменьшить на меньшем экране. Одним из ограничений было неравенство (большее или равное), где я указал минимальный требуемый размер, с приоритетом 1000, другим ограничением было ограничение равенства с определенным размером, который подходит для 4 "экрана, но с более низким приоритетом 250.

Таким образом, Xcode перестал жаловаться, и компоновка правильно переместилась на меньший экран.

enter image description here

52
frin

Ваш взгляд по горизонтали неоднозначен. У вас недостаточно информации о горизонтальных ограничениях, чтобы система могла предложить только одно решение для иерархии представлений. В этом случае он не может определить, какой размер представления или левого поля должен быть основан на текущей информации об ограничениях. 

Вам необходимо добавить ограничение <1000 меньше чем требуемый приоритет any к ширине вашего представления, придав ему определенную ширину или добавить ограничение равенства в ограничение левого поля. Сделав новое ограничение приоритетом <1000, это позволит новому ограничению должным образом смешаться с существующими ограничениями неравенства (которые являются обязательными). Вот другой вопрос который похож на ваш в отношении неравенства.

Размер представления будет различаться в зависимости от того, добавите ли вы новое ограничение к ширине представления или к левому полю представления. Все зависит от того, как вы хотите, чтобы ваш макет вел себя в ответ на изменения. 

6
larsacus

Это не имеет смысла для компилятора (и логически), потому что нет никакого способа узнать, должна ли программа изменить x или ширину. Создание одного из двух статических решит вашу проблему. 

1
Mika

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

0
Ravi H Malviya