问题
I having a problem, resizing text within a UIWebView
, the html
file is located within the bundle. I have managed to get a modified script to work within obj-c
, however using swift
3 there is no change to the text size, although the optimal value changes correctly at each click of the button
. Here is the code -
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.
}
}
Any pointers gratefully received - Thank you
回答1:
As this is a web view, you can wrap content with "font size" attribute,
let content = "<html><body><p><font size=30>" + webContent + "</font></p></body></html>"
webView.loadHTMLString(content, baseURL: nil)
Here change the size accordingly
回答2:
This question is answered here:
Resizing UIWebView text
However I converted it in to Swift3 and tested it on Xcode8. Here is the code:
class ViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!
var defaults = ["textFontSize":12]
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "https://stackoverflow.com/questions/39638019/resizing-text-in-uiwebview-swift-3")
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)
}
来源:https://stackoverflow.com/questions/39638019/resizing-text-in-uiwebview-swift-3