【问题标题】:Swift UIWebView initial zoom scaleSwift UIWebView 初始缩放比例
【发布时间】:2015-08-07 21:00:45
【问题描述】:

嘿,几天前我问了类似的问题,但没有任何帮助我,不,我认为我更接近问题。我的 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 会显示。我对任何解决方案都非常满意。

【问题讨论】:

    标签: ios swift uiscrollview uiwebview


    【解决方案1】:

    我用这个链接解决了这个问题

    在 Swift 中

    最初我尝试更改 Web 视图缩放比例,但效果不佳。

    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)")
    
    }
    

    如果需要更改缩放级别,请更改“initial-scale”以查看初始级别缩放的效果。 这对我真的很有帮助。 谢谢“UIWebView set initial zoom scale programmatically when loading an external website?

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这里“默认值”的值是什么我收到此错误“使用未解析的标识符'默认值'”
      • @HariNarayanan OP 将滚动位置存储在 UserDefaults 中以保存它们。然后当下次加载 web 视图时,它会获取 contentOffset 的存储值并将它们应用于 web 视图
      • 我得到了另一个答案,我解决了谢谢你..来自stackoverflow.com/questions/8028051/…
      猜你喜欢
      • 1970-01-01
      • 2011-07-23
      • 2011-12-23
      • 2011-12-24
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 2014-05-11
      • 2015-06-21
      相关资源
      最近更新 更多