При прокрутке табличного представления угловой радиус метки искажается - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть одна метка, которая на основе некоторого условия будет видна для некоторых строк. Я добавил метку в виде стека. Пользовательский интерфейс метки должен иметь цвет фона и радиус угла как круглые.

У меня есть ячейка подкласса UItableview, и я использовал следующий код:

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

Когда я запускаю этот код и прокручиваю табличное представление, угловой радиус метки иногда становится таким образомчтобы показать прямоугольник, означающий отсутствие углового радиуса, а иногда и цвет фона также теряется. Мне нужно сохранить все это, когда пользователь прокручивает табличное представление.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вам необходимо определить свой пользовательский интерфейс для обоих случаев isShow:

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
    }
}
0 голосов
/ 30 сентября 2019

попробуйте это в cellForRowAt indexPath cell.selectionStyle = .none

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...