2009-05-11 7 views
2

J'utilise une vue méta comme mentionné ici Why does UIWebView shrink images? pour UIWebView. Cela formate bien le portrait et je n'ai pas à compenser pour une mise à l'échelle bizarre. Cependant, une fois tournée vers le paysage, je ne peux pas profiter de la largeur supplémentaire. Ce qui veut dire que je voudrais insérer plus de texte dans une seule ligne pour le paysage. Tout reste à l'échelle à 1,0. Existe-t-il un moyen de changer la taille de la fenêtre en .75 en rotation et de revenir à 1.0 en mode portrait?Formatage paysage UIWebview avec fenêtre

Répondre

0

J'ai écrit cette fonction pour définir la largeur de la fenêtre lors de la redimensionnement d'UIWebView. Vous pouvez facilement l'adapter pour définir une propriété de fenêtre d'affichage autre que la largeur.

-(NSString *) setViewportWidth:(CGFloat)inWidth { 
    NSString *result = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"(function (inWidth) { " 
     "var result = ''; " 
     "var viewport = null; " 
     "var content = 'width = ' + inWidth; " 
     "var document_head = document.getElementsByTagName('head')[0]; " 
     "var child = document_head.firstChild; " 
     "while (child) { " 
      "if (null == viewport && child.nodeType == 1 && child.nodeName == 'META' && child.getAttribute('name') == 'viewport') { " 
       "viewport = child; " 
       "content = child.getAttribute('content'); " 
       "if (content.search(/width\\s=\\s[^,]+/) < 0) { " 
        "content = 'width = ' + inWidth + ', ' + content; " 
       "} else { " 
        "content = content.replace(/width\\s=\\s[^,]+/ , 'width = ' + inWidth); " 
       "} " 
      "} " 
      "child = child.nextSibling; " 
     "} " 
     "if (null != content) { " 
      "child = document.createElement('meta'); " 
      "child.setAttribute('name' , 'viewport'); " 
      "child.setAttribute('content' , content); " 
      "if (null == viewport) { " 
       "document_head.appendChild(child); " 
       "result = 'append viewport ' + content; " 
      "} else { " 
       "document_head.replaceChild(child , viewport); " 
       "result = 'replace viewport ' + content; " 
      "} " 
     "} " 
     "return result; " 
    "})(%d)" , (int)inWidth]]; 

    return result; 
}