调整 UIWebView 文本的大小

Posted

技术标签:

【中文标题】调整 UIWebView 文本的大小【英文标题】:Resizing UIWebView text 【发布时间】:2015-01-30 22:09:42 【问题描述】:

我试图让用户调整给定网页的文本大小。我在 Xcode 6 中使用 Swift。 html 文件:

<!DOCTYPE html>
    <html>
    <body>

        <h1>My First Heading</h1>

        My first paragraph.

    </body>
</html>

这是我调用的 swift 函数来尝试更改大小:

func changeWebViewFontSize(decOrInc: Int, webView: UIWebView)

//1 = decreace
//2 = increace
var textFontSizeTemp = defaults.objectForKey("textFontSize") as Int

switch decOrInc

case 1: //when decrease
    defaults.setObject(textFontSizeTemp - 1, forKey: "textFontSize")
case 2: //when increase
    defaults.setObject(textFontSizeTemp + 50, forKey: "textFontSize")
default:
    break


var jsString = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust=\(textFontSize)"
//var jsString = "alert('test')"
webView.stringByEvaluatingjavascriptFromString(jsString)

我知道 javascript 正在运行,因为当我在 javascript 中运行 alert() 函数时,它起作用了。请帮我找出我的代码有什么问题!

【问题讨论】:

您首先在 textFontSizeTemp = defaults.objectForKey("textFontSize") 中将 textFontSizeTemp 的值读取为 Int,然后在您的 switch case 语句中增加它的大小。最终使用你在更新之前读取的值来设置字体大小,你确定这是你想要的吗? 不...我只是想弄清楚如何完成它。如果您能提出不同的方法,我会非常高兴。 只是想检查一下,你只是想增加字体大小对吗? 在这里查看我的答案***.com/questions/39638019/… 【参考方案1】:

我写了一个这样的例子,它可以调整字体大小(在点击按钮时增加大小):

class webViewController: UIViewController 

@IBOutlet weak var webView: UIWebView!

@IBOutlet weak var increase: UIButton!

var defaults  = ["textFontSize":12]

@IBAction func btnIncreaseTapped(sender: AnyObject) 
    changeWebViewFontSize(2,webView: webView)


override func viewDidLoad() 
    super.viewDidLoad()

    let url = NSURL(string: "http://***.com/questions/28245483/resizing-uiwebview-text/28245982?noredirect=1#comment44873831_28245982")


    let urlRequest = NSURLRequest(URL: url!)

    webView.loadRequest(urlRequest)        



func changeWebViewFontSize(decOrInc: Int, webView: UIWebView)

    //1 = decreace
    //2 = increace
    var textFontSizeTemp = defaults["textFontSize"]! as Int


    switch decOrInc
    
    case 1: //when decrease
        textFontSizeTemp  = textFontSizeTemp - 1
    case 2: //when increase
        textFontSizeTemp = textFontSizeTemp + 50
    default:
        break
    

    defaults["textFontSize"] = textFontSizeTemp


    var jsString = "document.getElementsByTagName('body')[0].style.fontSize='\(textFontSizeTemp)px'"
    webView.stringByEvaluatingJavaScriptFromString(jsString)
    

【讨论】:

我的 html 会比我列出的要长很多,而且我会有很多。我不能把每一个都变成一个字符串。 没关系,这只是一个例子,我现在将字符串html替换为这个SO问题的url 另外,我将 textSize 存储在 NSUserDefaults 中,因此它会在应用程序关闭后记住文本大小。我这样做是对的,还是应该做一些不同的事情? 将它保存在用户默认值上很好,但这个问题是关于“调整 UIWebView 文本大小”的。如果您还有其他问题,请在其他线程上发布。 meta.stackexchange.com/questions/39223/…

以上是关于调整 UIWebView 文本的大小的主要内容,如果未能解决你的问题,请参考以下文章

根据内容字体大小动态调整 UIWebView 的大小

调整 UIWebView 框架大小时如何禁用 UIWebView 调整内容大小

UIWebView 调整大小缓慢

不清楚调整 UIWebView 的大小行为

如何在 UIModalPresentationFormSheet 中调整 UIWebView 的大小?

在 UIScrollView 内滚动时,调整大小的 UIWebView 返回到原始大小