2015-01-26 5 views
2

У меня есть UIView в UITableViewCell. в представлении у меня есть UITextView и UIView. Они оба являются автоматическими ограничениями на всех четырех сторонах.Смена высоты автоустановки UIView

UIView имеет ограничение по высоте. Я хотел бы обновить ограничение высоты пропорционально. Я сделал выход ограничения высоты, чтобы изменить его.

Вот мой код:

CGRect frame = self.myView.frame; 
frame.size.height = 50; 
frame.size.width = self.myView.frame.size.width; 
self.myView.frame = frame; 
self.viewHeight.constant = 50; 

[myTableView reloadData]; 

Когда я запускаю этот код, он прекрасно работает, но я получаю сообщение об ошибке: (Я довольно новыми для Objective C, так что я не понимаю, что это пытается сказать.)

2015-01-26 15:25:43.408 myApp[1449:55334] 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:0x7fb07853ac20 V:[UIView:0x7fb0784dbb80(50)]>", 

    "<NSLayoutConstraint:0x7fb0785bd170 V:|-(0)-[UITextView:0x7fb07896de00] (Names: '|':UIView:0x7fb07857fb70)>", 

    "<NSLayoutConstraint:0x7fb0785bd260 V:[UITextView:0x7fb07896de00]-(3)-[UIView:0x7fb0784dbb80]>", 

    "<NSLayoutConstraint:0x7fb0785bd350 V:[UIView:0x7fb0784dbb80]-(0)-| (Names: '|':UIView:0x7fb07857fb70)>", 

    "<NSLayoutConstraint:0x7fb0785bd5b0 UILabel:0x7fb0785150f0'info:'.top == UITableViewCellContentView:0x7fb078581400.topMargin>", 

    "<NSLayoutConstraint:0x7fb0785bd650 UITableViewCellContentView:0x7fb078581400.bottomMargin == UIView:0x7fb07857fb70.bottom + 1>", 

    "<NSLayoutConstraint:0x7fb0785bd6f0 V:[UILabel:0x7fb0785150f0'info:']-(8)-[UIView:0x7fb07857fb70]>", 

    "<NSLayoutConstraint:0x7fb078704f20 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fb078581400(77)]>" 

) 



Will attempt to recover by breaking constraint 

<NSLayoutConstraint:0x7fb07853ac20 V:[UIView:0x7fb0784dbb80(50)]> 



Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. 

The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 
+0

«Невозможно одновременно удовлетворить ограничения». Это означает, что система автоопределения не может удовлетворить ваши ограничения, потому что ограничения содержат конфликты. Попробуйте изучить ваш код ограничений – taocp

+0

Все остальные ограничения сделаны в раскадровке, и там нет ошибок –

ответ

0

Вы programmaticlly изменить ограничение высоты до 50. неудовлетворен UIView-Encapsulated-Layout-Height ограничение (77), который устанавливается прошивкой для UITableViewCellContentView.

+0

В heightForRowAtIndexPth мой оператор return выглядит следующим образом: return txtView.frame.size.height + self.myView.frame.size.height + 44 - 0,5; –

+0

@MikeRally Является 'txtView.frame.size.height + self.myView.frame.size.height + 44 - 0.5' Предположим, что это точно' 50'? Во всяком случае, я не рекомендую смешивать ограничения раскадровки и программно установленные ограничения. Это вызывает множество неожиданных проблем. – skyline75489

+0

нет. self.myView.frame.size.height - 50. Обычно я этого не делаю, но мне нужно было назначить высоту myView в раскадровке, и я пытаюсь изменить высоту программным образом. –

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