web-dev-qa-db-fra.com

Utilisation du texte d'étiquette "attribué" dans Interface Builder

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:

enter image description here

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:

enter image description here

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.

32
Kyle Gillen

Dans Xcode 7.0 beta: j'ai trouvé que cela fonctionnait.

Storyboard: http://imgur.com/Wb5H4ds

Sortie:

http://imgur.com/iOV8tJF

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];
}
2
Jamil

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.

1
Eugene Braginets

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

0
Hamid Reza Ansari