我的xib布局喜欢绘图 我已经设置了约束" a"到" b"到..." e"除了" c"的高度常数这样就可以确定细胞的高度。 有时候" c"将隐藏,因为某些原因,当标签的内容可见时,我将高度常数更改为零和实际高度。
--------------------------------------
UILabel(name-singleline) a
UILabel(title-Multi line) b
UIView(hidden or not) c (default height constant = 80)
-UILabel(content Multi line) d
UILabel(singleline) e
--------------------------------------
但是有一个自动布局警告让我发疯了
(
"<NSLayoutConstraint:0x15756760 V:[UILabel:0x15756650'XXXX'(15)]>",
"<NSLayoutConstraint:0x15757130 V:[UIView:0x15756ee0(80)]>",
"<NSLayoutConstraint:0x15758060 V:|-(21)-[UILabel:0x15756650'XXXX'] (Names: '|':UITableViewCellContentView:0x157563a0 )>",
"<NSLayoutConstraint:0x15758120 V:[UILabel:0x15756650'XXXX']-(14)-[Project.GWWLabel:0x157573d0'YYYY']>",
"<NSLayoutConstraint:0x157581e0 V:[Project.GWWLabel:0x157573d0'YYYY']-(3)-[UIView:0x15756ee0]>",
"<NSLayoutConstraint:0x15758210 V:[UIView:0x15756ee0]-(8)-[UILabel:0x157569e0'ZZZZ']>",
"<NSLayoutConstraint:0x15758270 V:[UILabel:0x157569e0'ZZZZ']-(18)-| (Names: '|':UITableViewCellContentView:0x157563a0 )>",
"<NSLayoutConstraint:0x1575d760 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x157563a0(139.5)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x15757130 V:[UIView:0x15756ee0(80)]>
我也非常有兴趣了解为什么会发生这种情况
答案 0 :(得分:3)
答案 1 :(得分:0)
自动布局的第一个黄金法则(特别是在处理TableView的单元格时)是能够从上到下,从左到右绘制一条线,并能够确定每个元素的大小。要管理这个,您需要确保每个视图每边至少有一个约束(除非可以推断它的大小)
有时,在不同屏幕尺寸上测试UI时,约束可能会中断。在这种情况下,您应该更改视图的约束或内容拥抱/压缩阻力的优先级,以允许自动布局中断约束并更改常量以适应屏幕大小。 (大多数情况下,它只会在几个点上发生变化,如果变化更大,则可能需要更改约束)
同样重要的是要提到“隐藏的视图,即使它们不绘制,仍然参与自动布局并且通常保留其框架,在其位置留下其他相关视图。” check this post