关于ios:在滚动表格视图时,标签的角半径正在扭曲

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)
        }
}

当我启动此代码并滚动表格视图时,标签的角半径有时会变成显示矩形视图,这意味着没有角半径,有时背景颜色也会丢失。当用户滚动表格视图时,我需要保留所有这些。


你需要为 isShow:

的两种情况定义你的 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