调整 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 调整内容大小