在 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:无)
大功告成。
我在调整 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:无)
大功告成。