在 UIWebView 中调整文本大小 - Swift 3

Resizing text in UIWebView - Swift 3

我在调整 UIWebView 中的文本大小时遇到​​问题,html 文件位于包中。我已经设法让修改后的脚本在 obj-c 中工作,但是使用 swift 3 文本大小没有变化,尽管每次单击 button 时最佳值都会正确更改.这是代码 -

import UIKit

class ViewController: UIViewController {

@IBOutlet var resWebView: UIWebView!

@IBOutlet weak var increaseFont: UIBarButtonItem!

@IBOutlet weak var decreaseFont: UIBarButtonItem!


var defaults  = ["textFontSize":40]


@IBAction func fontButtonPressed(sender: UIBarButtonItem) {

    var textFontSize = defaults["textFontSize"]

    switch sender.tag
    {
    case 1 : //when decrease
        textFontSize  = textFontSize! - 10

    case 2 ://when increase
        textFontSize = textFontSize! + 50
    default:
        break
    }

    defaults["textFontSize"] = textFontSize

    print(textFontSize)

    var jsString = "document.getElementsByTagName('body')[0].style.fontSize='\(defaults["textFontSize"])px'"
    resWebView.stringByEvaluatingJavaScript(from: jsString)
}


override func viewDidLoad() {
    super.viewDidLoad()

    let resFilePath = Bundle.main.url(forResource: "ResilienceHandbook", withExtension: "html");

    let resRequest = URLRequest(url: resFilePath!);
    resWebView.loadRequest(resRequest);


    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

非常感谢收到任何指示 - 谢谢

这里回答了这个问题:

Resizing UIWebView text

但是我将其转换为 Swift3 并在 Xcode8 上进行了测试。这是代码:

class ViewController: UIViewController {

@IBOutlet weak var webView: UIWebView!

var defaults  = ["textFontSize":12]

override func viewDidLoad() {
    super.viewDidLoad()

    let url = NSURL(string: "")


    let urlRequest = NSURLRequest(url: url! as URL)

    webView.loadRequest(urlRequest as URLRequest)

}

func changeWebViewFontSize(zoomInOrZoomOut: Int, webView: UIWebView)
{
    //1 = decreace
    //2 = increace
    var textFontSizeTemp = defaults["textFontSize"]! as Int


    switch zoomInOrZoomOut
    {
    case 1: //when decrease
        textFontSizeTemp  = textFontSizeTemp - 20
    case 2: //when increase
        textFontSizeTemp = textFontSizeTemp + 20
    default:
        break
    }

    defaults["textFontSize"] = textFontSizeTemp


    let jsString = "document.getElementsByTagName('body')[0].style.fontSize='\(textFontSizeTemp)px'"
    webView.stringByEvaluatingJavaScript(from: jsString)
}

//UIButton Action
@IBAction func zoomOutButton_TouchUpInside(_ sender: AnyObject)
{
    changeWebViewFontSize(zoomInOrZoomOut: 1,webView: webView)
}

@IBAction func zoomInButton_TouchUpInside(sender: AnyObject)
{
    changeWebViewFontSize(zoomInOrZoomOut: 2,webView: webView)
}

由于这是一个网络视图,您可以使用 "font size" 属性包装内容,

        let content = "<html><body><p><font size=30>" + webContent + "</font></p></body></html>"
        webView.loadHTMLString(content, baseURL: nil)

此处相应地更改大小

创建一个片段变量如下:

                           let snippet = "<html><head><style>body { font-family: -apple-system, GothamNarrowSSm-Medium; sans-serif;}</style><meta name=\"viewport\" content=\"width=device-width, initial-scale=0.5\"></head><body>\(YOUR_HTML_HERE)</body></html>"

把你 string/html 变量放在你看到 YOUR_HTML_HERE 的地方。

Set/replace 到您喜欢的字体和 initial-scale=value 中的大小比例。

然后,传递给WKWebView。

yourWebView.loadHTMLString(片段,baseURL:无)

大功告成。