On scrolling of table view, corner radius of label is getting distorted
我有一个标签,根据某些条件,某些行可以看到该标签。我在堆栈视图中添加了标签。标签的 UI 是背景颜色和圆角半径为圆形。
我有子类 UItableview 单元格并使用了以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class SampleCell: UITableViewCell { @IBOutlet weak var status: UILabel! override func awakeFromNib() { super.awakeFromNib() } override func prepareForReuse() { super.prepareForReuse() self.status.text = nil } override func didMoveToSuperview() { super.didMoveToSuperview() layoutIfNeeded() } func setUpStatusLabel(isShow: Bool) { self.status.text ="Status" self.status.textColor = UIColor.red self.status.font = UIFont.systemFont(ofSize: 11) self.status.layer.cornerRadius = self.status.frame.size.height/2 self.status.layer.masksToBounds = false self.status.layer.backgroundColor = UIColor.lightGray.cgColor self.status.isHidden = !isShow } } |
1 2 3 4 5 6 7 8 | override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = (tableView.dequeueReusableCell(withIdentifier:"sample", for: indexPath) as? SampleCell)! if indexPath.row % 2 == 0 { cell.setUpStatusLabel(isShow: true) } else { cell.setUpStatusLabel(isShow: false) } } |
当我启动此代码并滚动表格视图时,标签的角半径有时会变成显示矩形视图,这意味着没有角半径,有时背景颜色也会丢失。当用户滚动表格视图时,我需要保留所有这些。
你需要为
的两种情况定义你的 UI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | func setUpStatusLabel(isShow: Bool) { self.status.isHidden = !isShow self.status.layer.masksToBounds = false self.status.layer.backgroundColor = UIColor.lightGray.cgColor self.status.font = UIFont.systemFont(ofSize: 11) if isShow { self.status.text ="Status" self.status.textColor = UIColor.red self.status.layer.cornerRadius = self.status.frame.size.height/2 } else { //change the following according to your need. self.status.text ="" self.status.textColor = UIColor.darkText self.status.layer.cornerRadius = 0 } } |
在 cellForRowAt indexPath 中试试这个
cell.selectionStyle = .none