2013-07-10 2 views
1

Je possède ce NSString avec htmlIOS: insérer UIImage dans références chaîne HTML

NSString* html = [NSString stringWithFormat:@"<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"viewport\" content=\"width=device-width\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><title>Request</title><link rel=\"stylesheet\" type=\"text/css\" href=\"email.css\" /></head><body bgcolor=\"#FFFFFF\"><table class=\"body-wrap\"><tr><td></td><td class=\"container\" bgcolor=\"#FFFFFF\"><div class=\"content\"><table><tr><td><center><img src=\"./top.jpg\" style=\"margin-top: -5px; margin-bottom: 5px;\"/><img src=\"./bottom.jpg\" alt=\"\" style=\"width: 250px;\"/></center><h3>The User %@ %@</h3><p class=\"lead\">read this email.</p><p>REQUEST: %@</p><p>NAME: %@</p><p>SURNAME: %@</p><p>NUMBER: %@</p><p>CODE: %@</p><p>EMAIL: %@</p></td></tr></table></div></td><td></td></tr></table></body></html>", @"Name",@"Surname", @"Center", @"Name1", @"Cognome1", @"Number", @"code", @"email"]; 

Dans ce code html il y a deux images: top.jpg et bottom.jpg, et je veux savoir waht est la façon de passer à ce code le chemin local de ces deux images, donc je peux les visualiser.

grâce

+0

sont les chemins locaux à locaux au périphérique iOS ou le chemin d'accès local de votre ordinateur? Je suis un peu confus. –

+0

NSString * top_image = [[NSBundle mainBundle] pathForResource: @ "top" deType: @ "jpg"]; NSString * bottom_image = [[NSBundle mainBundle] pathForResource: @ "bas" deType: @ "jpg"]; local dans le projet iOS – CrazyDev

Répondre

1
NSString* html = [NSString stringWithFormat:@"<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"viewport\" content=\"width=device-width\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><title>Request</title><link rel=\"stylesheet\" type=\"text/css\" href=\"email.css\" /></head><body bgcolor=\"#FFFFFF\"><table class=\"body-wrap\"><tr><td></td><td class=\"container\" bgcolor=\"#FFFFFF\"><div class=\"content\"><table><tr><td><center><img src=\"./top.jpg\" style=\"margin-top: -5px; margin-bottom: 5px;\"/><img src=\"./bottom.jpg\" alt=\"\" style=\"width: 250px;\"/></center><h3>The User %@ %@</h3><p class=\"lead\">read this email.</p><p>REQUEST: %@</p><p>NAME: %@</p><p>SURNAME: %@</p><p>NUMBER: %@</p><p>CODE: %@</p><p>EMAIL: %@</p></td></tr></table></div></td><td></td></tr></table></body></html>", @"Name",@"Surname", @"Center", @"Name1", @"Cognome1", @"Number", @"code", @"email"]; 
UIWebView *temp = [[UIWebView alloc] initWithFrame:CGRectMake(startX, startY, width, height)]; 
NSData *htmlData = [self parseStringToHTML:html]; 
[temp loadData:_htmlData MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 

Cela devrait faire l'affaire. L'élément clé est baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]

La baseURL indique à UIWebView où rechercher toutes les ressources dont son contenu peut avoir besoin.

Ceux qui ne veulent rien faire avec webViews mais qui veulent faire des images font partie de votre chaîne html: Ajoutez la classe Base64 www.imthi.com/wp-content/uploads/2010/08/base64.zip dans votre projet. Maintenant encoder comme:

NSData* data = UIImageJPEGRepresentation(yourImage, 1.0f); 
[Base64 initialize]; 
NSString *strEncoded = [Base64 encode:data]; 

maintenant dans votre chaîne html remplacer src = \ "./ bottom.jpg \" par un NSString avec le format suivant:

@"src="data:image/jpg;base64,%@",strEncoded 
+0

Je devrais envoyer ce code HTML dans un email et ne pas le charger dans un webview – CrazyDev

+0

Je ne comprends pas. Voulez-vous envoyer ce code HTML à quelqu'un et ne pas l'afficher dans un WebView? Si oui, voulez-vous envoyer ces images avec le code HTML? Ou le récepteur les aura-t-il? Le récepteur est-il également un appareil iOS? – JohnVanDijk

+0

oui, je ne le montre pas dans un webview, et je n'ai pas besoin de "[temp loaddata ..." mais j'ai besoin d'envoyer ce html avec un email avec "SKPSMTPMessage", ça marche très bien mais je veux montrer deux images – CrazyDev