Таинственное значение, представленное NSAutoresizingMaskLayoutConstraint, установленное системой AutoLayout - PullRequest
0 голосов
/ 15 декабря 2018

AutoLayout добавляет NSAutoresizingMaskLayoutConstraint, который вызывает конфликт, и неясно, где и как.

Вопрос в следующем: откуда берется высота 293?

Иерархия UIView:

enter image description here

Журнал AutoLayout был пронумерован.Метки Xcode не отображаются в журналах AutoLayout.

Строка 1, похоже, проблема.Основываясь на ограничениях, кажется, что это Post View Cell, который является пользовательским UICollectionViewCell.

И все же функция sizeForItemAt UICollectionViewDelegate не возвращает это значение.Если вы жестко закодируете возвращаемое значение в что-то вроде CGSize(width: 300, height: 100), в журнале все равно появится 293.

Так откуда же берется 293?

Строка 2 - это ограничение, установленное в коде, иэто правильное значение.Это представление должно быть Attachment View.

Строки 3 и 4 относятся к Post Content View, то есть UIStackView.

Строка 5 относится к Text View.

Строка 6 относится к Attachment View.

Строка 7 - это интервал, установленный UIStackView (Post Content View).

1. "<NSAutoresizingMaskLayoutConstraint:0x600002a47610 h=--& v=--& UIView:0x7facf0e126b0.height == 293   (active)>",
2. "<NSLayoutConstraint:0x600002a79a40 UIView:0x7facf0e07110.height == 280   (active)>",
3. "<NSLayoutConstraint:0x600002a785a0 V:[UIStackView:0x7facf0e12890]-(10)-|   (active, names: '|':UIView:0x7facf0e126b0 )>",
4. "<NSLayoutConstraint:0x600002a79180 V:|-(10)-[UIStackView:0x7facf0e12890]   (active, names: '|':UIView:0x7facf0e126b0 )>",
5. "<NSLayoutConstraint:0x600002a7cff0 'UISV-canvas-connection' UIStackView:0x7facf0e12890.top == UITextView:0x7facf283a600'hi'.top   (active)>",
6. "<NSLayoutConstraint:0x600002a7cf00 'UISV-canvas-connection' V:[UIView:0x7facf0e07110]-(0)-|   (active, names: '|':UIStackView:0x7facf0e12890 )>",
7. "<NSLayoutConstraint:0x600002a7d270 'UISV-spacing' V:[UITextView:0x7facf283a600'hi']-(5)-[UIView:0x7facf0e07110]   (active)>"


Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x600002a79a40 UIView:0x7facf0e07110.height == 280   (active)>

1 Ответ

0 голосов
/ 16 декабря 2018

NSAutoresizingMaskLayoutConstraint может возникнуть в любое время, когда у вас есть представление, для которого translatesAutoresizingMaskIntoConstraints равно true (что, к сожалению, является значением по умолчанию при создании представления в коде).Убедитесь, что это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...