UITableViewCell中的UILabel约束在横向上发生了变化

时间:2016-03-04 04:17:48

标签: ios autolayout uitableview

我的故事板中有一个静态console.log( document.querySelector(".company-detail").innerHTML .match(/[0-9a-z.@\s]+(?=<br>)/ig).toString().trim() ),其中包含系统单元格和自定义单元格的组合。为了使自定义单元格看起来像系统单元格,我已经从<p class="company-detail"> <span class="sb-span-left">Industry</span> : Recruiting Services<br> <span class="sb-span-left">Telephone</span> : 023 993 009<br> <span class="sb-span-left">Email</span> : cv@camupjob.com<br> <span class="sb-span-left">Website</span>: www.camupjob.com<br> </p>的前面添加了一个15点约束到单元格的contentView(以匹配默认的分隔符插入15)点)。

当表格视图为纵向时,此策略很有效,但在横向视图中看起来约束会缩小,如下所示:

人像: System cell alongside custom cell in portrait

风景: System cell alongside custom cell in landscape

您可以在上图中看到&#34; BUG REPORTING&#34;部分标题,&#34;报告错误&#34;标签(由系统单元定位),两个单元格之间的线距离contentView左侧15个点,但是&#34; Logging&#34;标签更接近。

我尝试将标签约束到contentView并打开和关闭边距,结果是一样的。自定义标签的约束甚至会报告不同的常量值,因为它们与contentView左侧的距离明显相同。

Example of constraint information when constrained to margin

Example of constraint information when not constrained to margin

有谁知道发生了什么?

1 个答案:

答案 0 :(得分:2)

尝试为标签的前导约束创建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
}

或者,您可以使用大小类为Compact Height大小类设置不同的约束:

Compact height size class

然后,只需设置约束条件即可。常数为12而不是7(如果不使用边距,则为20而不是15)。