2014-09-19 3 views
0

В хорошо работающем приложении я просто выполнил перевод строк в коде и раскадровке, а затем получаю ошибку «Невозможно одновременно удовлетворить ограничения».Ограничения AutoLayout конфликты после перевода строк

Ошибка:

Unable to simultaneously satisfy constraints. 
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
"<NSLayoutConstraint:0x1d5408d0 V:[UIView:0x1d540c40(0)]>", 
"<NSLayoutConstraint:0x1d540910 V:|-(0)-[UIView:0x1d540c40] (Names: '|':UIView:0x1d541100)>", 
"<NSLayoutConstraint:0x1d540fd0 V:[UILabel:0x1d541040(21)]>", 
"<NSLayoutConstraint:0x1d5407d0 V:[UIView:0x1d540c40]-(20)-[UILabel:0x1d541040]>", 
"<NSLayoutConstraint:0x1d540710 V:[LTSelectView:0x1d542210]-(360)-| (Names: '|':UIView:0x1d541100)>", 
"<NSAutoresizingMaskLayoutConstraint:0x1d5928b0 h=--& v=--& V:[UIView:0x1d541100(416)]>", 
"<NSLayoutConstraint:0x1d540690 V:[UILabel:0x1d541040]-(19)-[LTSelectView:0x1d542210]>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1d540fd0 V:[UILabel:0x1d541040(21)]> 

Break on objc_exception_throw to catch this in the debugger. 
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 

ли перевод где-то ответственен за это?

Я прочитал несколько сообщений по этому вопросу, но причины на самом деле нелегко понять для меня.

Так мои объекты:

UILabel: высота равна 21 Ширина равна: 220 верхнее пространство в верхней Layout: 17 Align центр X, чтобы: SuperView Bottom пространство SelectView: 22

LTSelectView: Ширина равна: 160 Высота равна: 30 по центру X, чтобы: SuperView Top пространство UILabel: 22 Bottom пространство UIButton: 67

UIButton: Ширина равна: 100 высота равна: 30 Топ пространства в SelectView: 67 Совместите центр: SuperView

И на самом деле я вижу UILabel, в UIButton, но не LTSelectView , Таким образом, проблема, безусловно, здесь. Я использую obj_exception_throw, но у меня все получилось.

После других тестов, я только проблема на iOS6. Все хорошо работает на iOS7.

+0

Вы добавили ограничения в код? Существует этот 'NSAutoresizingMaskLayoutConstraint', который выглядит так, будто вы забыли установить для' translatesAutoresizingMasksToContraints' значение NO. – dasdom

+0

Нет Я не добавлял никаких ограничений в код и сомневаюсь, я добавляю эту строку в свой метод viewDidLoad, и результат - чистый кошмар! Ничто уже не находится в правильном месте. – 2ndGAB

+0

Тогда мой ответ: ваши ограничения неверны. – dasdom

ответ

0

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

Измените приоритет некоторых ограничений или перестройте их.

+0

Я обновил свое сообщение, чтобы объяснить, каковы мои объекты и ограничения. Не вижу, что я могу удалить ... – 2ndGAB

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