方向更改时的自定义 TableViewCell 自动布局问题

Posted

技术标签:

【中文标题】方向更改时的自定义 TableViewCell 自动布局问题【英文标题】:Custom TableViewCell autolayout issue upon orientation change 【发布时间】:2018-05-04 11:42:56 【问题描述】:

我有一个这样的自定义 UITableViewCell 类:

class CustomCell: UITableViewCell 
  var mainText:UILabel = UILabel()
  var detailText:UILabel = UILabel()

  override init(style: UITableViewCellStyle, reuseIdentifier: String?) 
    super.init(style: style, reuseIdentifier: reuseIdentifier)

    self.contentView.addSubview(mainText)
    self.contentView.addSubview(detailText)

    self.updateCellConstraints()
  

  fileprivate func updateCellConstraints() 
    self.mainText.translatesAutoresizingMaskIntoConstraints = false
    self.detailText.translatesAutoresizingMaskIntoConstraints = false
    self.detailText.setContentCompressionResistancePriority(.required, for: .horizontal)

    let margins = self.contentView.layoutMarginsGuide

    self.mainText.leftAnchor.constraint(equalTo: margins.leftAnchor).isActive = true
    self.mainText.centerYAnchor.constraint(equalTo: margins.centerYAnchor).isActive = true

    self.detailText.leftAnchor.constraint(equalTo: self.mainText.rightAnchor, constant: 10).isActive = true
    self.detailText.widthAnchor.constraint(greaterThanOrEqualToConstant: 20).isActive = true
    self.detailText.rightAnchor.constraint(equalTo: margins.rightAnchor, constant: -10).isActive = true
    self.detailText.centerYAnchor.constraint(equalTo: margins.centerYAnchor).isActive = true
  

cellForRowAtIndexPath 中,我将其出列并在mainTextdetailText 上设置一些自定义属性,最后设置一个accessoryType,这是一个披露指标。

现在的问题。在纵向模式下一切正常,但是当我在 iPad 上切换到横向时,我的单元格居中(即左右区域为空白,单元格居中,maintextdisclosureIndicator 仍然分开,但 UI 看起来不好的)。我该如何摆脱这个?

我希望我的手机能够像在纵向模式下一样正常工作。我做错了吗?

【问题讨论】:

发布两种情况的截图 【参考方案1】:

这是因为 Apple 在 ios9 中添加了可读的内容指南。

只要做:

tableView.cellLayoutMarginsFollowReadableWidth = false

或者如果您部署到 iOS9 之前:

if #available(iOS 9.0, *) 
    tableView.cellLayoutMarginsFollowReadableWidth = false

更多关于这个话题Readable Width of Table View Cells

【讨论】:

太好了,如果这就是您所需要的,您也可以通过单击绿色复选标记来接受答案:)

以上是关于方向更改时的自定义 TableViewCell 自动布局问题的主要内容,如果未能解决你的问题,请参考以下文章

在自定义 tableviewcell 中更改 UIImage

更改 uitableviewcell 中的自定义附件视图?

为啥我的 UISearchDisplayController 不使用我的自定义 tableViewCell?

定向更改时的列表视图的自定义对话框(横向模式)

如何更改 tableViewCell 的颜色? [关闭]

标签显示超出我的自定义 TableViewCell 范围并通过 swift 设置自动布局