Я использую автоматические ограничения компоновки программно, и я постоянно вижу такую же ошибку в моем приложении, обычно связанную с ограничением, которое выглядит следующим образом:
"<NSAutoresizingMaskLayoutConstraint:0x82da910 h=--& v=--& V:[UITableViewCellContentView:0x82d9fb0(99)]>"
Я поставил некоторый пример кода для воспроизведения https://github.com/nicolasccit/AutoLayoutCellWarning
В этом примере я создаю очень простой вид с двумя элементами пользовательского интерфейса: изображение с именем 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.
Любая идея, что я делаю неправильно здесь?
Спасибо, Николя