帧不会更新UITableViewCell的autolayout子视图

时间:2014-10-07 08:29:16

标签: uitableview autolayout xcode6 xib

我试图将阴影添加到自定义UITableViewCell的子视图中。子视图用作单元格的可见背景(单元格的根视图是清晰的)。

使用xib在接口构建器中布置单元格。子视图使用自动布局约束布局到单元格的4个边缘。

对于不同宽度的设备,子视图本身似乎可以自动调整。从堆栈溢出研究中我发现我必须将我的依赖于帧的代码放在layoutSubviews方法中。我把阴影绘图代码放在那里:

layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:subView.bounds cornerRadius:3.0]CGPath];

阴影出现,但仅在调整大小之前显示帧的大小,这在调整之后似乎是视图框架矩形,在界面构建器中是一个可修改的常量(对于autolayout视图控制器实际上是灰色的:@ )。

从进一步调试看来,即使单元格视图框是。(这是通过在layoutSubviews中打印视图框架的宽度来执行),子视图框架永远不会更新。

 layoutSubviewscalled, parent view frame size: 180 subview frame size: 148.000000
 layoutSubviewscalled, parent view frame size: 375 subview frame size: 148.000000
这是一个错误吗?我错过了什么吗?我该怎么做才能谴责这个?

1 个答案:

答案 0 :(得分:0)

in this answer所示,在插入UIBezierPath作为shadowPath之前,应调用[self setNeedsLayout]。