嘿,伙计们,我在谷歌上搜索了一下,读了一些关于堆栈溢出的话题,但是没人能真正帮我,所以我希望你们能帮我。
我有一个UIWebView,它显示一个本地保存的PDF文件,运行得非常好,但我也希望在加载PDF文件时设置缩放级别。我是这样解决的。

 override func viewDidAppear(animated: Bool) {

    WebView.scalesPageToFit = true
    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)

        print(defaults.objectForKey("zoomlevel") as! CGFloat)
    }

但这并不是很好,因为它看起来对用户不好,所以我试图将代码移动到ViewWillAppear,但随后它就不再工作了,pdf也不会被缩放。
感谢您的任何解决方案:)
当我在下面写评论时进行编辑设置后,我打印了缩放比例的值。
        WebView.scrollView.setContentOffset(offest, animated:false)
        println(defaults.objectForKey("zoomlevel") as! CGFloat)
        println(WebView.scrollView.zoomScale)

如果在viewwills或ViewDidLoad中执行此操作,则第一个值是保存的值,如1.82366,第二个值仍然是1.0。如果我在ViewDidAppear中调用它,则第一个值和第二个值相等,除了视图的第一个外观(app start)。因此,如果它启动应用程序,它将显示与上面描述的ViewWillAppear相同,但如果我通过segue从另一个ViewController返回,它将为viewdiddeappear工作。

最佳答案

我知道这个问题现在可能太老了,但我最终用swift代码解决了它,我将把它放在这里,它可能对其他人有用:
要使webview.scrollview.setzoomscale工作,zoomscale应该介于maximumzoomscaleminimumzoomscale属性之间。默认情况下,这两个值都是1,这就是缩放对您不起作用的原因。添加此项,应该可以:

webView.scrollview.maximumZoomScale = CGFloat(10) // or any number higher than your zoomscale

现在应该可以了。

关于ios - UIScrollView setZoomscale在ViewWillApper中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31787045/

10-13 23:54