TableviewCell动态高度 - 自动布局问题

时间:2015-05-13 18:04:21

标签: ios xcode autolayout constraints tableview

我需要实施像Instagram这样的新闻提要,但我遇到了一些我的约束方面的麻烦。

我有一个tableView单元格,其中包含:imageView,标签1,标签2,视图1和视图2,垂直顺序如下:

enter image description here

我需要达到以下条件:
- 我的形象是方形的 - 标签1(黑色)最多5行 - 标签2(红色标签)不具有最大行数
- 视图1是30px高度
- 视图2高度为35px

我的约束是:

图像:

  • 尾随空间到superview
  • 领导空间到superview
  • 超级视图的顶层空间
  • 用常数= 8
  • 标记1的空格
  • height = 320,优先级= 999(在运行时我将此值更改为查看宽度)
  • 内容拥抱 - 垂直= 751,水平= 751
  • 内容压缩 - 垂直= 1000,水平= 751

标签1:

  • 使用常量= -20和优先级= 999
  • 将空格尾随到superview
  • 使用常数= 20
  • 将空间引导至superview
  • height> = 20,优先级= 750
  • 标签2的底部空格,常数= 8
  • 内容拥抱 - 垂直= 1000,水平= 752
  • 内容压缩 - 垂直= 1000,水平= 751

标签2:

  • 使用常量= -20和优先级= 999
  • 将空格尾随到superview
  • 使用常数= 20
  • 将空间引导至superview
  • height> = 20,优先级= 750
  • 使用常量= 8
  • 的view1的底部空间
  • 内容拥抱 - 垂直= 1000,水平= 752
  • 内容压缩 - 垂直= 1000,水平= 751

查看1:

  • 尾随空间到superview
  • 领导空间到superview
  • botton space to view2
  • 身高= 30
  • 内容拥抱 - 垂直= 1000,水平= 250
  • 内容压缩 - 垂直= 1000,水平= 750

观看2:

  • 尾随空间到superview
  • 领导空间到superview
  • botton space to superview
  • height = 35
  • 内容拥抱 - 垂直= 1000,水平= 750
  • 内容压缩 - 垂直= 1000,水平= 750

在运行时,我收到几个关于约束的警告。它无法满足我的所有限制。

"<NSLayoutConstraint:0x7fec35712d60 V:[UIView:0x7fec357391e0(30)]>",
"<NSLayoutConstraint:0x7fec3570a8f0 V:[UIView:0x7fec357432a0(35)]>",
"<NSLayoutConstraint:0x7fec350d17b0 V:|-(0)-[UIImageView:0x7fec35711340]   (Names: '|':UITableViewCellContentView:0x7fec35744f30 )>",
"<NSLayoutConstraint:0x7fec350bf830 V:[UIImageView:0x7fec35711340]-(8)-[TimelineLabel:0x7fec3570a980'Usura']>",
"<NSLayoutConstraint:0x7fec350bc7e0 V:[TimelineLabel:0x7fec3570a980'Usura']-(8)-[UILabel:0x7fec350ddb40'Produtos: BATOM: MAC, SOM...']>",
"<NSLayoutConstraint:0x7fec35701f20 V:[UILabel:0x7fec350ddb40'Produtos: BATOM: MAC, SOM...']-(8)-[UIView:0x7fec357391e0]>",
"<NSLayoutConstraint:0x7fec350e90c0 V:[UIView:0x7fec357391e0]-(0)-[UIView:0x7fec357432a0]>",
"<NSLayoutConstraint:0x7fec350e9110 UIView:0x7fec357432a0.bottom == UITableViewCellContentView:0x7fec35744f30.bottom>",
"<NSLayoutConstraint:0x7fec357085c0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fec35744f30(0)]>"  
Will attempt to recover by breaking constraint 
NSLayoutConstraint:0x7fec3570a8f0 V:[UIView:0x7fec357432a0(35)];


对于我的tableView中的每个单元格,打破一个不同的常量。

我尝试了很多解决方案但没有效果。

帮助!请!

1 个答案:

答案 0 :(得分:2)

警告是关于动态TableViewCell中的牢不可破的约束。但是,随着布局在执行时间的变化,您必须让视图适应自己,而不受严格的“像素精度”限制。

您需要将1000个优先级约束中的一些设置为999.这将使Xcode对某些需要破坏约束的情况感到高兴。但是,在大多数情况下,您的所有约束都将得到满足。 = d