Swift UIWebView初始缩放比例

时间:2015-08-07 21:00:45

标签: ios swift uiscrollview uiwebview

嘿,几天前我问了类似的问题,但没有可以帮助我,不,我认为我更接近这个问题。我在rootViewController上有一个WebView,并为缩放比例和本地PDF的位置保存了一些值,现在我想在显示时将Webview设置为此值,所以我尝试了以下内容。

   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看起来我是否进行了任何滚动或缩放。对于任何解决方案,我都非常高兴。

2 个答案:

答案 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)
}