如何制作一个单元格及其元素显示为灰色?

时间:2018-12-10 18:27:33

标签: swift uitableview addsubview

我有一个UITableView,它是文章列表。当用户点击某篇文章时,便会对其感兴趣,然后当他们返回列表时,我希望将该文章标记为“已读”。在这种情况下,已标记为已读意味着该单元格应显示为灰色。我正在尝试通过创建一个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对单元格的外观没有影响
  • 是否有更好的方法来达到我想要的效果?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以这样做:

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

但是,我建议在单元格内的Storyboard文件中创建此叠加视图,在此处将其公开为IBOutlet蚂蚁,只需在isHidden中设置updateCellProperties值方法。

祝你好运!