override func viewDidAppear(animated: Bool) {
doLayoutThings()
}
func doLayoutThings(){
if(defaults.objectForKey("positionY") != nil){
WebView.scrollView.setZoomScale(defaults.objectForKey("zoomlevel") as! CGFloat, animated: false)
let offest = CGPoint(x: defaults.objectForKey("positionX") as! CGFloat, y: defaults.objectForKey("positionY") as! CGFloat)
WebView.scrollView.setContentOffset(offest, animated:false)
println(defaults.objectForKey("zoomlevel") as! CGFloat)
}
我知道有正确的值保存到UserDefaults,但Webview看起来我是否进行了任何滚动或缩放。对于任何解决方案,我都非常高兴。
答案 0 :(得分:1)
我使用此链接来解决此问题
在Swift中
最初我尝试更改网页视图缩放比例,但它并没有那么正常。
webview.scrollView.setZoomScale(1.5, animated: true)
所以我尝试在webViewDidFinishLoad
中更改它func webViewDidFinishLoad(_ webView: UIWebView) {
webview.scalesPageToFit = true
let str = "var meta = document.createElement('meta');"
let str1 = "meta.setAttribute( 'name', 'viewport' ); "
let str2 = "meta.setAttribute( 'content', 'width = device-width, initial-scale = 1.0, user-scalable = yes' ); "
let str3 = "document.getElementsByTagName('head')[0].appendChild(meta)"
webview.stringByEvaluatingJavaScript(from: "\(str)\(str1)\(str2)\(str3)")
}
如果您需要更改缩放级别,请更改“初始缩放”以查看初始级别缩放的效果。 这对我很有帮助。 谢谢“UIWebView set initial zoom scale programmatically when loading an external website?”
答案 1 :(得分:0)
在viewDidAppear
中设置缩放比例很好,但在网页视图加载其内容之前无法设置contentOffset
。所以你必须在UIWebView
上设置一个委托,然后在委托方法中设置contentOffset:
override func viewDidLoad() {
webView.delegate = self
}
func webViewDidFinishLoad(webView: UIWebView) {
let offset = CGPoint(x: defaults.objectForKey("positionX") as! CGFloat, y: defaults.objectForKey("positionY") as! CGFloat)
webView.scrollView.setContentOffset(offset, animated: false)
}