UIWebView et taille du texte

muqaddarmuqaddar Administrateur
15:11 modifié dans API UIKit #1
Salut,

Je récupère du texte HTML dans une appli iPhone (donc formatté en HTML avec plein de caractères encodés).

Lorsqu'il est affiché dans une webView, il est tout petit par défaut (comme un site pas adapté pour l'iPhone). Logique.

Si je charge le texte dans une UITextView, je me retrouve évidemment avec tous les caractères indésirables.

Quelle est la meilleure façon de procéder pour avoir du texte formatté "de taille correcte" ?

Faut-il développer une version mobile du site obligatoirement ?

Réponses

  • RedKingRedKing Membre
    15:11 modifié #2
    Bonsoir,

    Lorsque tu affiche du HTML dans une UIWebView, tu peux fixer la taille de ta page HTML pour que celle-ci s'affiche en taille normale dans ton application et non la page entière comme Safari Mobile.

    Pour cela dans le header de ton fichier HTML  ajoute la balise suivante :
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1">

    Le minimum-scale empèche ton application de diminuer la taille de ta page.
    Le maximum-scale permet de régler le niveau de zoom si tu souhaites laisser la possibilité à  l'utilisateur de zommer dans la UIWebView.

    Pour la seconde question, je n'ai pas encore utilisé UITextView, donc je ne peux pas t'aider pour l'instant.
  • muqaddarmuqaddar Administrateur
    15:11 modifié #3
    En fait, il s'agit d'un fichier XML... dont je récupère juste une balise qui contient une string HTML à  traiter. Et il n'y a que cette string qui est à  afficher en HTML dans la webView ou alors il faut la nettoyer de son HTML mais c'est dommage car UIWebView me la formatte bien. J'aimerai juste que ce soit écrit plus gros.

    Pour l'instant, c'est écrit comme ça (cf capture), et je trouve cela un peu petit :
  • AliGatorAliGator Membre, Modérateur
    15:11 modifié #4
    Heu dis moi, ce HTML est-il complet niveau page, est-ce bien une page HTML proprement formée (et pas juste un extrait de texte balisé) ? Permet moi d'en douter (et d'ailleurs le mettre en source d'une UIWebView comme ça, c'est mal, car ta page ne sera pas W3C compliant du coup :P)

    Par exemple si je regarde la balise <description> du flux RSS d'osx-dev, je vois que c'est du HTML, certes, mais la racine du HTML est un <div>, contenant d'autre texte HTML... en tout cas c'est loin d'être formatté comme une page <html><body>...</body></html>

    Et c'est là  tout ton problème à  mon avis. Puisque ton code source HTML que tu fournis à  ta UIWebView n'est pas une vraie page HTML, il faut un peu comme bon lui semble.

    Pour résoudre le problème, c'est pas bien compliqué, il suffit de wrapper ton extrait de code HTML (issu de la balise <description> de ton RSS typiquement) dans du vrai HTML, genre
    NSString* fullHTML = [NSString stringWithFormat:@&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;Contenu du post&lt;/title&gt;&lt;/head&gt;&lt;body&gt;%@&lt;/body&gt;&lt;/html&gt;&quot; , extraitHTML];
    
    Bon je te laisse composer le vrai source, mais en plus avec ça tu peux rajouter du CSS dans ton <head> pour rajouter de la mise en forme personnalisée, genre grossir le corps de police par défaut par exemple... Sans pour autant avoir de traitement particulier à  faire sur ta chaà®ne extraitHTML issue elle du RSS et que tu n'as pas à  modifier du coup, juste à  l'enrober.
  • muqaddarmuqaddar Administrateur
    15:11 modifié #5
    Boudiou, c'est une excellente idée !
    Il suffit de l'enrober effectivement !
  • AliGatorAliGator Membre, Modérateur
    15:11 modifié #6
    Bah non seulement "il suffit" de l'enrober, mais en plus je dirais presque qu'il "faut" l'enrober... pour avoir une page HTML valide ensuite, proprement formée, avec le tag <html> en racine (et encore j'ai pas mis le <!DOCTYPE ...> alors qu'il faudrait pour bien faire)... parce que c'est quand même bien plus mieux de respecter les standards :P
Connectez-vous ou Inscrivez-vous pour répondre.