J'ai besoin de définir deux attributs à un texte présenté par un UILabel
: l'espacement entre les lettres (kern), et son style barré. Sur la base de la documentation NSAttributedStringKey
j'ai créé l'extension suivante à la UILabel
:Comment définir l'espacement entre les caractères (kern) et le style barré pour `UILabel`?
extension UILabel {
func setStrikeThroughSpacedText(text: String, kern: CGFloat?) {
var attributes: [NSAttributedStringKey : Any] = [:]
if let kern = kern {
attributes[.kern] = kern
}
attributes[.strikethroughStyle]
= NSNumber(integerLiteral: NSUnderlineStyle.styleSingle.rawValue)
self.attributedText = NSAttributedString(string: text,
attributes: attributes)
}
}
Cependant, il semble que .kern
clé entre en collision en quelque sorte avec la clé .strikethroughStyle
, parce que si je précise kern, le kern est appliqué, mais pas le style barré. Si je ne spécifie pas kern (donc l'extension n'applique pas l'attribut .kern
), le style barré fonctionne.
Quelqu'un a une manière différente de contourner ce bug (je suppose que c'est un bug)?
Ceci, en effet, semble être un bug. Avez-vous déposé un radar? – the4kman
pas encore .. bien que je viens de le tester en simulateur sur iOS 11 et il semble y travailler .. il semble donc qu'ils l'ont réparé là .. –
Voir une réponse mise à jour avec le résultat. – Krunal