Атрибут strikeThrough не совместим с iOS 13 - PullRequest
0 голосов
/ 28 сентября 2019

Я использовал это String расширение, чтобы добавить strikeThrough к тексту

, вот расширение:

extension String{
func strikeThrough()->NSAttributedString{
    let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: self)
    attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, attributeString.length))
    return attributeString
}

А вот как я использую для UILabel:

     if isDone {
            self.title?.attributedText = title.strikeThrough()
        } else {
            self.title?.attributedText = nil
            self.title?.text = title
        }

Хорошо работает в iOS 12, но в iOS 13 self.title?.attributedText = nil не удаляет зачеркнутую строку.В моем приложении, когда strikeThrough добавлен к тексту, он будет удален из списка, но теперь он удален, но strikeThrough будет появляться в других текстах, чего не должно быть.А самовывоз?тоже не ноль.

Не могли бы вы предложить мне какой-либо способ удалить strikeThrough из текста, текущая форма с nil не работает.

Большое спасибо

1 Ответ

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

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

Например:

let strokeEffect: [NSAttributedString.Key : Any] = [
    NSAttributedString.Key.strikethroughStyle: NSUnderlineStyle.single.rawValue,
    NSAttributedString.Key.strikethroughColor: UIColor.gray]

self.title?.attributedText = NSAttributedString(string: title, attributes: strokeEffect)

Затем для удаления strikeThrough вы можете просто изменить его цветочистить ...

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