xcode 如何在静态可扩展视图中匹配默认的可扩展视图单元格X位置/前导约束?

brqmpdu1  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(142)

我有一个静态的可扩展视图,有4个单元格:第一个和最后一个单元格是自定义的,而第二个和第三个单元格使用内置样式(分别为“Basic”和“Right Detail”)。我对第一个和最后一个单元格中的标签有以下约束:

  • label.leading = superview.leading + 20
  • label.Center Y = superview.Center Y

我在将自定义可扩展ViewCell标签的约束与默认可扩展ViewCell(使用内置样式的标签)的约束进行匹配时遇到了问题。
对于某些设备(例如iPhone XR),标签的X位置与所有四个单元格(20)匹配:


的数据
但对于其他设备(例如iPhone Xs),标签的X位置不匹配(16 vs 20):



请注意,第一个和最后一个单元格的X位置(20)大于第二个和第三个单元格的X位置(16)。
起初,我以为默认单元格的约束会根据设备的大小类别而变化,但iPhone XR和XS都有紧凑的宽度(wC)和规则的高度(hR)。
如何将自定义单元格的标签约束与默认的可扩展视图单元格的标签约束相匹配?

vbkedwbf

vbkedwbf1#

textLabeldetailTextLabel甚至存在于子类UITableViewCell中。虽然使用textLabel代替自定义标签可以解决左边距问题,但UISwitch在右侧仍然存在问题。
但是,您可以将布局与textLabel的前导约束和detailTextLabel的尾随约束对齐。

if let leadingAnchor = cell?.textLabel?.leadingAnchor {
    myLabel.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
}

if let trailingAnchor = cell?.detailTextLabel?.trailingAnchor {
    mySwitch.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
}

字符串

fjnneemd

fjnneemd2#

这将在iPhone SE上设置为16,在更新的设备上设置为20

let leadingConstant = contentView.directionalLayoutMargins.leading
textLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: leadingConstant).isActive = true

字符串

相关问题