Я использую автоматические ограничения компоновки программно для компоновки своих пользовательских ячеек UITableView, и я правильно определяю размеры ячеек в tableView:heightForRowAtIndexPath:
Он отлично работает на iOS6, и он отлично выглядит в iOS7, а также
НО, когда я запускаю приложение на iOS7, вот вид сообщения, который я вижу на консоли:
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.
2013-10-02 09:56:44.847 Vente-Exclusive[76306:a0b] 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:0xac4c5f0 V:|-(15)-[UIImageView:0xac47f50] (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSLayoutConstraint:0xac43620 V:[UIImageView:0xac47f50(62)]>",
"<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>",
"<NSLayoutConstraint:0xac43680 V:[UIView:0xac4d0f0(1)]>",
"<NSLayoutConstraint:0xac436b0 V:[UIView:0xac4d0f0]-(0)-| (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>
И действительно, мне не нужно одно из ограничений в этом списке:
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
и я не могу установить для свойства translatesAutoresizingMaskIntoConstraints
contentView
значение NO = > , это испортит всю ячейку.
44 - это высота ячеек по умолчанию, но я определил свои пользовательские высоты в делегате представления таблиц, так почему же содержимое cellView имеет это ограничение? Что может быть причиной этого?
В iOS6 это не происходит, и все отлично выглядит как на iOS6, так и на iOS7.
Мой код довольно большой, поэтому я не буду публиковать его здесь, но не стесняйтесь спрашивать пастебин, если он вам нужен.
Чтобы указать, как я это делаю, при инициализации ячейки:
- Я создаю все свои ярлыки, кнопки и т.д.
- Я установил для своего свойства
translatesAutoresizingMaskIntoConstraints
значение NO - Я добавляю их как подпункты
contentView
ячейки - Я добавляю ограничения на
contentView
Мне также очень интересно понять, почему это происходит только на iOS7.