Пользовательское представление iOS: невозможно одновременно удовлетворить ограничение ограничений

Я следую руководству Рэя Вендерлиха по внедрению RateView: http://www.raywenderlich.com/1768/how-to-make-a-custom-uiview-a-5-star-rating-view

После внедрения rateView в мое приложение я получил эту ошибку:

Невозможно одновременно удовлетворить ограничения. Вероятно, по крайней мере одно из ограничений в следующем списке - это то, что вам не нужно. Попробуйте это: (1) посмотреть на каждое ограничение и попытаться выяснить, чего вы не ожидаете; (2) найдите код, который добавил нежелательное ограничение или ограничения, и исправьте его. (Примечание. Если вы видите непонятные NSAutoresizingMaskLayoutConstraints, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints)

("NSAutoresizingMaskLayoutConstraint: 0x870c2b0 h = - & v= -& V:[UIView:0x93a1d60(416)]", "NSLayoutConstraint:0x87363c0 V:|-(203)-[RateView:0x8729040 '] (имена: |:UIView:0x93a1d60)", "NSLayoutConstraint:0x8736440 V:[RateView:0x8729040]-(228)-| (Имена: '|':UIView:0x93a1d60)")

Попытка восстановления путем нарушения ограничения NSLayoutConstraint: 0x8736440 V: [RateView: 0x8729040] - (228) - | (Имена: '|': UIView: 0x93a1d60)

Сломайте objc_exception_throw, чтобы поймать это в отладчике. Методы в категории UIConstraintBasedLayoutDebugging на UIView, перечисленные в UIKit/UIView.h, также могут быть полезны.

Я скачал пример приложения, которое предоставляет Рэй, и оно отлично работает для меня, без ошибок. После поиска по коду я не вижу различий, и мои подключения в Интерфейсном Разработчике такие же, как у него. Единственное существенное различие было в инспекторе размера для наших отдельных просмотров ставок. Его выглядит так:

пока мой выглядит так:

Учитывая, что ошибка связана с ограничениями, это, вероятно, проблема. Тем не менее, я понятия не имею, как изменить свое представление ставок на автоматическое изменение размера и т.п., как у Рей. Помогите?

4 ответа

Решение

Снимите флажок "Использовать Autolayout" и попробуйте....

Новый Xcode 5 имеет новую функцию, которая знает нас о различных значениях. Я действительно ценю эту функцию, она уменьшает ошибки и различия между тем в раскадровке и в симуляторе и / или устройстве.

Попробуйте следовать желтому треугольнику. Он расположен на левой боковой панели, когда открывается окно просмотра раскадровки. Он предлагает три способа решения проблемы и работает автоматически.

Так что просто обновите Frame, Constraints или сбросьте до предложенных ограничений.

РЕШЕНИЕ:

(если вы не видите левую боковую панель, в новом xcode 5 она может быть скрыта, просто нажмите на значок воспроизведения):

показывает левую боковую панель раскадровки

Сначала следуйте желтой стрелке:

Сначала следуйте за желтой стрелкой

Затем следуйте желтому треугольнику и после нажатия на него вы получите диалог:

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

Это ошибка AutoLayout constraints Вы должны пересмотреть свои ограничения, которые используются в XIB представления. Исправьте эти ограничения, и тогда ваш проект будет работать нормально. Надеюсь, что это поможет вам.

Измените приоритет нижнего пространства на:superview или Top space на:superview со значения по умолчанию (1000) до высокого (750).

Другие вопросы по тегам