Строка с атрибутом WKInterfaceLabel не работает по ширине

Я использую строку с атрибутами для зачеркивания текста в WKInterfaceLabel. Это работает до тех пор, пока текст не станет длиннее, чем ширина часов, и поэтому вы увидите .... На самом деле то же самое происходит и на iOS; однако вы можете вырезать содержимое, которое решит проблему. На часах вырезка отсутствует.

Как зачеркнуть видимый текст, если общая ширина выходит за пределы экрана? Ниже приведен код:

let attributedString = NSMutableAttributedString(string: self.fileTextArray[i])
attributedString.addAttribute(NSStrikethroughStyleAttributeName, value: NSNumber(value: NSUnderlineStyle.styleThick.rawValue), range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSStrikethroughColorAttributeName, value: UIColor.red, range: NSMakeRange(0, attributedString.length))

row.translatedTextLabel.setAttributedText(attributedString)

person C6Silver    schedule 30.06.2017    source источник


Ответы (1)


Похоже, это ошибка, но есть обходной путь. Чтобы исправить это, используйте следующую строку кода:

attributedString.addAttribute(NSBaselineOffsetAttributeName, value: 0, range: NSMakeRange(0, attributedString.length))

Это решает проблему как в Watch OS, так и в iOS.

Дополнительная информация здесь: iOS 10.3: NSStrikethroughStyleAttributeName не отображается, если применяется к поддиапазону NSMutableAttributedString

person C6Silver    schedule 30.06.2017