2

Selon la documentation d'Apple, si vous ne fournir aucune police pour une plage donnée de la chaîne attribuée, par défaut, il prendra Helvetica de la taille 12.Comment configurer la police par défaut pour NSAttributedString

Maintenant RightNow je veux changer cela police par défaut. Quelqu'un peut-il me suggérer comment puis-je faire cela.

En fait, je veux réaliser suivant chose:

i have chaîne avec html (html dynamique venant de serveur), laisser dire comme htmlStr. Dans cette chaîne, il est possible que des polices aient été définies pour différentes parties de html, et il est également possible qu'il n'y ait pas de jeu de polices pour ce htmlStr. Maintenant, comme je veux afficher + modifier ce htmlStr, je convertis d'abord ce htmlStr en attributeString, puis je le montre en textview en définissant attributedText pour textview.

Maintenant mon problème est, dans le cas où il n'y a aucune police est fournie pour ce htmlStr, il prend la police par défaut qui de trop petite taille et ne regarde pas bien. Alors, comment puis-je changer cette police par défaut pour la chaîne attribuée.

+0

Soit modifier la chaîne HTML pour forcer une taille de police, ou d'énumérer les attributedString et ajoutez la police correcte. – Larme

+0

Comment énumérer la chaîne attribuée pour vérifier la police? –

+0

réellement html vient de tous les endroits aléatoires, donc nous ne pouvons pas les appliquer du serveur, soit nous pouvons mettre à jour HTML en ajoutant une police par défaut (je ne sais pas beaucoup de HTML, donc demander) ou j'ai besoin de mettre à jour la police par défaut, mais je suis incapable de le faire. –

Répondre

2

Essayez

Objectif - C

__block BOOL found = NO; 
    NSMutableAttributedString *attrString = ... 
[attrString beginEditing]; 
    [attrString enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, attrString.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) { 
     if (value) { 
      UIFont *oldFont = (UIFont *)value; 
      UIFont *newFont = [oldFont fontWithSize:oldFont.pointSize * 2]; 
      [attrString addAttribute:NSFontAttributeName value:newFont range:range]; 
      found = YES; 
     } 
    }]; 
    if (!found) { 
     // No font was found - do something else? 
    } 
    [attrString endEditing]; 

Swift 4

var found = false 
var attrString = NSMutableAttributedString() 

attributedText.enumerateAttribute(NSAttributedStringKey.font, in: NSMakeRange(0, attributedText.length), options: NSAttributedString.EnumerationOptions(rawValue: 0)) { (value, range, stop) in 
     if let oldFont = value as? UIFont { 
      let newFont = oldFont.withSize(oldFont.pointSize * 2) 
      attributedText.addAttribute(NSAttributedStringKey.font, value: newFont, range: range) 
      found = true 
     } 
    } 

    if !found { 
     // No font was found - do something else? 
    } 

attributedText.endEditing() 
+0

Merci @Piyush, permettez-moi de convertir celui-ci en rapide et laissez-vous tenter, si cela fonctionne bien, vous aurez sûrement upvote. –

+0

Vous devez donner la balise 'swift' sur la question ... :) –

+0

réellement rapide ou objectif-c n'a pas d'importance, nous avons juste besoin de convertir de l'un à l'autre, mais obtenir la solution est nécessaire –

0
Try this one also:- 

- (NSAttributedString *) convertToAttributedString: (NSString *) string withStringToConvert: (NSString *) str2 { 
    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:string]; 
    [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, string.length)]; 
    [attributedStr addAttribute:NSFontAttributeName value:[UIFont fontWithName:FONT_APPLE_SD_GOTHIC_NEO_BOLD size:17.0] range:NSMakeRange(0, string.length)]; 

    [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0,str2.length)]; 
    [attributedStr addAttribute:NSFontAttributeName value: [UIFont fontWithName:FONT_APPLE_SD_GOTHIC_NEO size:17.0] range:NSMakeRange(0, str2.length)]; 

    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; 
    [style setLineSpacing:3]; 
    [attributedStr addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, string.length)]; 

    return attributedStr; 
}