当前位置:  开发笔记 > 编程语言 > 正文

旋转后UIWebView调整文本大小:寻找魔法bug或我的愚蠢的解释

如何解决《旋转后UIWebView调整文本大小:寻找魔法bug或我的愚蠢的解释》经验,为你挑选了4个好方法。

所以我在我的应用程序中有UIWebView,我加载了一些HTML(文章)给它,放一些CSS,使一切更好.这简单明了,一切都很完美,直到我尝试添加景观功能阅读,然后我注意到UIWebView忽略了任何CSS"font-size"我放入HTML并在旋转到横向模式后大幅增加字体大小.

我花了大约4-5个小时(我是编程Iphone应用程序的新手,但是在制作正确的东西时我很顽固)试图修复它.尝试了很多很多配置选项 - 没什么.

今晚发生了一些神奇的事情.看看来源:

景观与虫子:

r = CGRectMake(0.0, 0.0, 480.0, 320.0);
[adView.view removeFromSuperview];
if (!isFullScreen) {
    minus = 50 + minus;
    [controlsView setFrame:CGRectMake(0, r.size.height - 50, r.size.width, 50)];        
} else {
    minus = 20; 
}

[textView setFrame:CGRectMake(0, 0, r.size.width, r.size.height - minus)];  
[scrollView setFrame:CGRectMake(0, 0, r.size.width, r.size.height - minus)];

修复了横向(字体大小不再变化):

r = CGRectMake(0.0, 0.0, 480.0, 320.0);
[adView.view removeFromSuperview];
if (!isFullScreen) {
    minus = 50 + minus;
    [controlsView setFrame:CGRectMake(0, r.size.height - 50, r.size.width, 50)];        
} else {
    minus = 20; 
}
[textView setFrame:CGRectMake(0, 0, r.size.width, r.size.height - minus)];  
[scrollView setFrame:CGRectMake(0, 0, r.size.width, r.size.height - minus)];

if (!isFullScreen) {
    minus = 1 + minus;
} else {
    minus = 20+1;   
}
[textView setFrame:CGRectMake(0, 0, r.size.width, r.size.height - minus)];  
[scrollView setFrame:CGRectMake(0, 0, r.size.width, r.size.height - minus)];

正如您所看到的,我只是再次添加相同的代码并将保证金(减去)增加一个点.并且再次使用setFrame(不,它不会仅使用一组setFrame修复大小调整).

我很高兴它有效,但我想知道怎么做,所以我可以"正确的方式"做到这一点,因为现在代码看起来很愚蠢并且在应用程序底部有1点高度边距.

并且不要问为什么我再次尝试复制粘贴相同的代码..



1> 小智..:

在Safari网页内容指南还提到了如何禁用的CSS,这解决了我的情况下,问题的文本自动调整大小.

html {
    -webkit-text-size-adjust: none; /* Never autoresize text */
}



2> sniurkst..:

神奇的解决方案是:

- (void)webViewDidFinishLoad:(UIWebView *)webView{

    NSString *javascript = @"var style = document.createElement(\"style\"); document.head.appendChild(style); style.innerHTML = \"html{-webkit-text-size-adjust: none;}\";var viewPortTag=document.createElement('meta');viewPortTag.id=\"viewport\";viewPortTag.name = \"viewport\";viewPortTag.content = \";document.getElementsByTagName('head')[0].appendChild(viewPortTag);";
    [webView stringByEvaluatingJavaScriptFromString:javascript];

}



4> Azeem.Butt..:

你可能只需要阅读这个

https://developer.apple.com/library/content/documentation/appleapplications/reference/safariwebcontent/UsingtheViewport/UsingtheViewport.html

同样,如果仅指定视口宽度,则会推断高度和初始比例.图3-15显示了视口宽度设置为320时同一网页的渲染.请注意,纵向方向的渲染方式与图3-14中相同,但横向方向的宽度保持为320像素,这会 更改初始比例,并具有当用户更改为横向时放大的效果.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有