Проблема ограничения AutoLayout с неожиданным NSAutoresizingMaskLayoutConstraint
Я использую автоматические ограничения макета программно, и я постоянно вижу одну и ту же ошибку в своем приложении, обычно связанную с ограничением, которое выглядит следующим образом:
"<NSAutoresizingMaskLayoutConstraint:0x82da910 h=--& v=--& V:[UITableViewCellContentView:0x82d9fb0(99)]>"
Я поместил пример кода для воспроизведения наhttps://github.com/nicolasccit/AutoLayoutCellWarning
В этом примере я создаю очень простое представление с 2 элементами пользовательского интерфейса: представлением изображения с именем imageThumbnail и надписью labelName с некоторыми ограничениями:
"H:|-padding-[_imageThumbnail(==imageWidth)]-[_labelName]";
"V:|-padding-[_imageThumbnail(==imageHeight)]-padding-|";
"V:|-padding-[_labelName]";
Для обоих элементов я установил AutoresizingMaskIntoConstraints в NO.
И я получаю следующее исключение:
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:0xa6e4f90 V:[UIImageView:0xa6e4340]-(10)-| (Names: '|':UITableViewCellContentView:0xa6e4150 )>",
"<NSLayoutConstraint:0xa6e4f10 V:[UIImageView:0xa6e4340(80)]>",
"<NSLayoutConstraint:0xa6e4ed0 V:|-(10)-[UIImageView:0xa6e4340] (Names: '|':UITableViewCellContentView:0xa6e4150 )>",
"<NSAutoresizingMaskLayoutConstraint:0xa6e4ac0 h=--& v=--& V:[UITableViewCellContentView:0xa6e4150(99)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xa6e4f90 V:[UIImageView:0xa6e4340]-(10)-| (Names: '|':UITableViewCellContentView:0xa6e4150 )>
Я знаю, что последнее ограничение связано с представлением содержимого, но мне неясно, как его правильно удалить (настройка
AutoresizingMaskIntoConstraints в NO на contentView вызывает ошибку, и в ссылке SO ниже, это портит весь макет):
<NSAutoresizingMaskLayoutConstraint:0xa6e4ac0 h=--& v=--& V:[UITableViewCellContentView:0xa6e4150(99)]>
Я видел ответы на:Проблема авторазметки на iOS7 в UITableViewCell но никто из них, кажется, не работает для меня здесь.
Я считаю, что ограничения, которые я определяю, действительны и довольно просты, но не могут понять, что происходит. И я вижу исключение, возникающее как в iOS 6.1, так и в iOS 7.
Есть идеи, что я здесь делаю не так?
Спасибо Николас