Как мне создать «подчеркнутый» текст в UITableViewCell? - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно создать ячейку UITableView с проходящей через нее «линией».Ребята, вы знаете, как это сделать?Это будет ценник, поэтому я хочу сказать что-то вроде: «Старая цена и теперь со скидкой 50%».Таким образом, «старая цена» должна быть пересечена.

Код интерфейса пользователя

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "topSoldCell", for: indexPath) as! TableViewCell

    let content = self.dataTopSold[indexPath.item]
    cell.labelNomeTopSell.text = content.nome
    cell.imageViewTopSell.setImage(url: content.urlImagem, placeholder: "")
    cell.labelPrecoDe.text = "R$ \(content.precoDe)"
    cell.labelPrecoPor.text = "R$ 119.99"
    return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    performSegue(withIdentifier: "segueId", sender:self.dataTopSold[indexPath.row])

    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

         if segue.identifier == "segueId" {

        let des = segue.destination as! TelaDetalheProdutos

        des.stringNomeeDesc = sender as! Top10
    }
}

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

В вашем случае

It will be a price tag, so I want to say something like: "Old price and now with 50% OFF". So, the "old price" should be crossed.

Вы можете использовать атрибутивную строку для ее поддержки.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "topSoldCell", for: indexPath) as! TableViewCell
    let content = self.dataTopSold[indexPath.item]
    cell.labelNomeTopSell.text = content.nome
    cell.imageViewTopSell.setImage(url: content.urlImagem, placeholder: "")
    let oldPrice = "R$ \(content.precoDe)"
    let promotionString = oldPrice + " and now with 50% OFF"
    let attributedStr = NSMutableAttributedString(string: promotionString)
    let crossAttr = [NSAttributedStringKey.strikethroughStyle: NSUnderlineStyle.styleSingle.rawValue]
    attributedStr.addAttributes(crossAttr, range: NSMakeRange(0, oldPrice.count))
    cell.labelPrecoDe.text = attributedStr
    cell.labelPrecoPor.text = "R$ 119.99"
    return cell
}
0 голосов
/ 07 июня 2018

Как Старая цена является статическим контентом и также на первом месте в лейбле.Таким образом, вы можете взять линейное изображение и поставить ярлык на первое место, чтобы оно выглядело как Старая цена .Теперь вы можете скрыть / показать изображение в соответствии с вашими потребностями.

Если вам нужно подчеркнуть подчеркивание текста в метке, просто поместите эту строку в TextEdit.Отредактируйте их как хотите.И скопируйте в текст метки, установив стиль метки Обычный в Атрибут.

Надеюсь, эта работа для вас

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