2009-09-17 10 views
5

Je me demandais si UITextView pouvait afficher du texte enrichi? Je veux avoir un formatage simple sur mon texte en lecture seule (comme un alignement différent pour différentes parties du texte). sinon, quelle vue devrais-je utiliser?UITextView Texte enrichi?

Répondre

2

Généralement, la meilleure façon d'y parvenir est d'utiliser un UIWebView et de charger du contenu local dans lequel vous pouvez insérer des balises et tout ce dont vous avez besoin. Le chargement local doit être rapide et vous pouvez le styliser pour qu'il ressemble à n'importe quelle uitextview

Une autre option consiste à utiliser une sous-classe UILabel à la place et d'obtenir le code open-source Three20. Vous voulez le TTStyledTextLabel.

+0

Puis-je générer le code HTML à la volée et le charger dans la vue? –

+0

oui, vous pouvez le générer et le charger quand vous voulez, il vous suffit d'écrire le code qui va générer la chaîne html – coneybeare

2

Voici un extrait de code pour tous ceux qui tentent de le faire - utilisez uiwebview pour gérer du texte stylé - obtenir des fichiers js locaux pour travailler peut être une astuce. Allez dans Build Phases -> Compile Sources -> et ajoutez les fichiers js auxquels vous voulez accéder localement dans votre contenu html. Vous pouvez également évaluer les chaînes en tant que javascript à partir de l'objectif c sur votre page Web.

NSString *someHtmlContent = [NSString stringWithFormat:@"<html><head><style type=\"text/css\">body {padding: 0px; margin: 0px; }</style><script src=\"yourLocalJsFile.js\"></script></head><body></body></html>", dynamicText]; 

NSLog(@"HTML with code: \n%@", someHtmlContent); 

NSString *resourcePath = [[[[NSBundle mainBundle] resourcePath] 
           stringByReplacingOccurrencesOfString:@"/" withString:@"//"] 
           stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 

[MyWebView loadHTMLString:someHtmlContent baseURL:[NSURL URLWithString: 
              [NSString stringWithFormat:@"file:/%@//", resourcePath]]]; 

[self.MyWebView setDelegate:self]; 

Réglage du décidez de vous let délégué comment gérer les liens - vous les voulez ouvrir dans Safari mobile ou dans votre WebView

1

Vous pouvez consulter le projet EGOTextView sur GitHub. Il se décline en un

"Remplacement complet de UITextView, ajout de la prise en charge de l'édition de texte enrichi ".

+0

Le lien est https://github.com/enormego/EGOTextView – Andy

Questions connexes