UITableViewCell在UITableViewCell中的UILabel约束条件变化
我的故事板中有一个静态的UITableView
,它具有系统单元和自定义单元的组合。为了使自定义单元格看起来像系统单元格,我从UILabel
的前面向单元格的contentView添加了一个15点约束(以匹配15个点的默认分隔符插入点)。UITableViewCell在UITableViewCell中的UILabel约束条件变化
这种策略效果很好,当表视图是纵向的,但它看起来像限制,如下图所示,在景观时收缩:
您可以在上图中看到“BUG REPORTING”部分标题,“Report a Bug”标签(由系统单元定位),并且两个单元格之间的连线距离contentView的左侧均为15点,但“L ogging“标签更接近。
我试着用margin和on关闭contentView的标签,结果是一样的。当自定义标签的约束与contentView左侧的距离明显相同时,甚至会报告不同的常量值。
有谁知道这是怎么回事?
尝试为标签的主要约束的IBOutlet
,并修改它显示之前的细胞:
func tableView(_ tableView: UITableView, willDisplayCell cell: UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath) {
let leftInset = cell.separatorInset.left
cell.labelLeadingConstraint.constant = leftInset - 8
// - 8.0 accounts for constraint to margins in autolayout
}
或者,你可以使用大小类设定不同的约束条件为紧凑型身高尺寸级别:
然后,只需设置的约束常量至12,而不是如图7(或20而不是15,如果不使用边距)。
这是正确的想法(除了'awakeFromNib'选项外,因为只有当单元格从Storyboard第一次被加载时才被调用)。我会编辑你的答案,还包括我用来解决它的方法,并接受它。 – Mark
很酷。谢谢你的另一种方式。 – UIResponder
在您的第一张图片中,您的值为7,请问您能解释一下吗? –
当然。余量设置为8,所以通过将余量限制为7,我可以得到所需的15点偏移量。 – Mark
看来,当您将设备旋转到横向模式时,默认单元格标签的左侧填充增加。这可能是当设备处于portraint模式时,textLable的左侧填充为15pts,横向模式下为20pts。您可以创建标签领先空间约束的出口,并在viewWillRotate:method中更新其值。另请参阅Vignesh答案。 –