Edit - Cela a été marqué comme un doublon, mais comme je le dis ci-dessous, je cherche une solution Swift. Tout ce que j'ai trouvé est écrit en Objectif C.
J'essaie de convertir le code HTML en chaîne NSAttributedString, mais je ne vois pas comment définir le style et la taille de la police. Tous les exemples sont dans l’objectif C, pour lesquels je n’ai pas de compétences. Comment définir le style et la taille de la police sur System 15 (à titre d’exemple)
private func stringFromHtml(string: String) -> NSAttributedString? {
do {
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
if let d = data {
let str = try NSAttributedString(data: d,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
return str
}
} catch {
}
return nil
}
EDIT ...... J'ai essayé plusieurs méthodes. Je n'arrive pas à le faire marcher. Je reçois maintenant un message d'erreur: Le type d'expression est ambigu sans plus de contexte. Il pointe vers le NSAttributedString J'ai essayé ce qui suit:
let myAttribute = [ NSForegroundColorAttributeName: UIColor.blue ]
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
if let d = data {
let str = try NSAttributedString(data: d,
attributes: myAttribute,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
let myString = "Swift Attributed String"
let myAttribute = [ NSForegroundColorAttributeName: UIColor.blue ]
let myAttrString = NSAttributedString(string: myString, attributes: myAttribute)
// set attributed text on a UILabel
myLabel.attributedText = myAttrString
Police de caractère
let myAttribute = [ NSFontAttributeName: UIFont(name: "Chalkduster", size: 18.0)! ]
Ombre
let myShadow = NSShadow()
myShadow.shadowBlurRadius = 3
myShadow.shadowOffset = CGSize(width: 3, height: 3)
myShadow.shadowColor = UIColor.gray
let myAttribute = [ NSShadowAttributeName: myShadow ]
Souligné
let myAttribute = [ NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue ]
Couleur du texte
let myAttribute = [ NSForegroundColorAttributeName: UIColor.blue ]
Couleur BackGroud
let myAttribute = [ NSBackgroundColorAttributeName: UIColor.yellow ]
Swift 4 Vous pouvez utiliser:
let stringWithAttribute = NSAttributedString(string: selectedFilter ?? "",
attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 14.0)])
Vous devez d’abord convertir les données en chaîne, puis utiliser ce morceau de code.
let attributes = [
NSForegroundColorAttributeName: UIColor.black,
]
try NSAttributedString(string: "", attributes: attributes)
var attrString = NSAttributedString(string: "labelText", attributes: [NSForegroundColorAttributeName: UIColor.red, NSFontAttributeName: UIFont(name: "system", size: 12)])
label.attributedText = attrString
vous pouvez définir cette façon
let attribute: [String : Any] = [NSFontAttributeName: UIFont.systemFont(ofSize: UIFont.systemFontSize, weight: UIFontWeightThin),
NSForegroundColorAttributeName: UIColor.red]
let attributedText = NSAttributedString(string: "Your String", attributes: attribute)