我有一个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元素都变灰,这就是为什么我不尝试更改单元格的背景色。
谢谢
答案 0 :(得分:0)
您可以这样做:
readOverlayView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
,然后再将其添加为子视图,以使其在所有单元格上展开。
但是,我建议在单元格内的Storyboard
文件中创建此叠加视图,在此处将其公开为IBOutlet
蚂蚁,只需在isHidden
中设置updateCellProperties
值方法。
祝你好运!