NSAttributedString with different font size
Bonjour,
Je cherche à afficher un UILabel avec un attributedText qui contient une NSAttributedString avec deux chaà®nes ayant des UIFont différentes. J'arrive à afficher une couleur différente sur la portion de la chaine que je veux mais je n'arrive pas à changer la taille de la police de la partie que je veux. Voilà mon code ci-dessous, y voyez-vous une erreur ?
var thePriceStr : NSString = "300 euros TTC(voir conditions)"
let generalFont : UIFont = UIFont(name: "OpenSans-Bold", size: 20)!
let generalAttribs = [NSFontAttributeName: generalFont]
var attrString = NSMutableAttributedString(string: String(thePriceStr), attributes: generalAttribs)
var firstRange = thePriceStr.rangeOfString("300 euros TTC")
var secondRange = thePriceStr.rangeOfString("(voir conditions)")
let color1 = UIColor.greenColor()
let font1 = UIFont(name: "Helvetica", size: 10)
let attributes1 = [NSFontAttributeName: font1!, NSForegroundColorAttributeName : color1]
attrString.setAttributes(attributes1, range: secondRange)
priceLabel!.attributedText = attrString
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pourquoi ne pas créer deux textes et les additionner ensuite ?
il y a plus efficace, mais j'avais les routines sous la main.
Ca ne fait rien que tu ne pourrais pas faire avec des "NSAttributedString(string: attribute: )" ou avec des "addAttribute(_:value:range: )" mais ça expose des méthodes bien plus jolies et logiques et une API bien plus intuitive à utiliser, avec des setFont(_range:) et des setColor(_range:) etc.
Salut,
Merci chaleureusement pour votre aide. J'ai trouvé l'origine de mon bug, ça venait des fonts que j'avais définies pour des sizes classes particulières dans mon storyboard. J'ai pu testé ton pod Aligator et c'est juste beaucoup plus agréable de faire des NSattributedString.
Je note cependant un point dont je n'ai pas la réponse. J'ai défini deux size classes et j'ai défini une font dans mon storyboard pour chacune d'elle. Quand j'utilise ta méthode setFont de ton pod, la font n'est pas celle que je définie dans le code mais celle du storyboard. Pourtant, je vois dans l'implémentation que tu fais un removeAttribute avant de redéfinir la font.