如何使单元格及其元素看起来变灰?

How can I make a cell and its elements look greyed out?

我有一个 UITableView,它是一个文章列表。当用户点击一篇文章时,会有一个 segue 到它,然后当他们返回列表时,我希望该文章被标记为“已读”。在这种情况下,标记为已读意味着该单元格应该看起来是灰色的。我正在尝试通过创建一个 UIView 并将其用作该单元格上的叠加层来做到这一点。

这是我最近的尝试:

class PublicationTableViewCell: UITableViewCell {

  @IBOutlet weak var publicationTitle: UILabel!
  @IBOutlet weak var authorName: UILabel!
  @IBOutlet weak var authorInitials: UILabel!
  @IBOutlet weak var authorImage: UIImageView!
  @IBOutlet weak var bottomBorder: UIView! 

  var pub: PublicationModel? 

  func updateCellProperties(publication: PublicationModel, indexPathRow: Int) { 
    pub = publication if let isRead = publication.isRead {

    // this is the overlay that I can’t get to work
    let readOverlayView = UIView()
    readOverlayView.tintColor = UIColor.grey3
    readOverlayView.alpha = 0.5
    self.addSubview(readOverlayView)

    // I was greying out just the title like this. This will go away if I get the overlay to work
    publicationTitle.textColor = isRead ? UIColor.grey3 : UIColor.grey1

  }
}

 // some helper methods…

}

我已经逐步检查了代码并确认对于已阅读的文章,isRead 标志是 true 并且正在执行创建 readOverlayView 的代码。

我希望项目上的所有 UI 元素都显示为灰色,这就是我不尝试更改单元格背景颜色的原因。

谢谢

你可以这样做:

readOverlayView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 在将其添加为子视图之前,使其在所有单元格上展开。

不过,我建议在单元格内的 Storyboard 文件中制作此叠加视图,将其在此处公开为 IBOutlet 蚂蚁只需在 [=14] 中设置 isHidden 值=] 方法。

祝你好运!