J'essaie de renoncer à l'utilisation de NSAttributedString dans mon viewController, en choisissant d'utiliser l'option 'Attributed' (par opposition à 'Plain') dans le champ 'text' de l'inspecteur d'attributs pour un UILabel.
J'ai sélectionné les mots individuels que je veux attribuer et modifié leur police. Ceci est correctement reflété dans la fenêtre d'aperçu du texte et dans les scènes de IB:
Cependant, le simulateur ne reflète pas ces modifications, il semble qu’au moment de l’exécution, la police spécifiée pour les attributs n’est pas utilisée (lorsque je modifie une couleur, cela fonctionne comme prévu). J'ai ajouté les polices à mon projet et à ma pliste en vain:
Je n'ai trouvé aucune documentation sur cette fonctionnalité et elle pourrait très bien être similaire à la fonctionnalité 'styles de texte' de IB (pratiquement inutile pour l'instant) - mais je voulais simplement voir si quelqu'un avait eu de la chance de faire quelque chose de similaire dans le passé.
Toute aide ou suggestion est très appréciée, merci.
Edit 03/07/15 .__ Eh bien, je suis heureux d’annoncer que ce problème est enfin résolu dans Xcode 7 (toujours en version bêta). Pour que nous puissions enfin régler ce problème. Merci à tous ceux qui ont essayé de comprendre cela avec moi.
Dans Xcode 7.0 beta: j'ai trouvé que cela fonctionnait.
Storyboard: http://imgur.com/Wb5H4ds
Sortie:
OU . Vous pouvez le faire de manière dynamique.
-(void)attributedText{
UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(20, 100, 200, 44)];
NSString *newsTitle = @"Hello";
NSString *sportTtle = @"World";
NSString *title = [NSString stringWithFormat:@"%@ %@", newsTitle,sportTtle];
textView.text = title;
UIColor *color = [UIColor redColor];
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0];
NSDictionary *attrs = @{NSForegroundColorAttributeName : color,NSFontAttributeName:font};
NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithAttributedString:textView.attributedText];
[attrStr addAttributes:attrs range:[textView.text rangeOfString:sportTtle]];
textView.attributedText = attrStr;
[self.view addSubview:textView];
}
Problème de polices. Solution de contournement pour cela: nettoyer/nettoyer le dossier de construction. Parfois, aide… ../MISE À JOUR: Je sais que cela ressemble à un «conseil stupide» - mais cela a été une astuce dans mon cas, alors publiez-le ici - pour gagner du temps, peut-être.
c'est une solution simple et rapide, et c'est ce qui fonctionne dans mon cas ... Cette solution consiste à ajouter une ligne de code dans didFinishLaunchingWithOptions func dans le fichier AppDelegate.Swift:
pour textViews :
UITextView.appearance().font = UIFont(name: "IranSans", size: 17)
pour les étiquettes :
UILabel.appearance().font = UIFont(name: "IranSans", size: 17)
et pour le reste de UiView comme ceci deux two