嘿伙计们我在谷歌上搜索了一下,并在这里阅读了一些关于堆栈溢出的主题,但没有一个云真的帮助我,所以我希望你能帮助我。 我有一个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没有缩放。 感谢任何解决方案的想法:)
编辑,因为我在下面写了一条评论,我在打印后打印了Zoomscale的值。
WebView.scrollView.setContentOffset(offest, animated:false)
println(defaults.objectForKey("zoomlevel") as! CGFloat)
println(WebView.scrollView.zoomScale)
如果我在ViewWillAppear或ViewDidLoad中执行此操作,则第一个值是保存的值,如1.82366,第二个值仍为1.0。如果我在ViewDidAppear中调用它,则第一个和第二个值相等,除了View的第一个外观(app start)。因此,如果它启动App,它就像上面针对ViewWillAppear所描述的那样,但如果我通过segue从另一个ViewController返回,它适用于ViewDidAppear。
答案 0 :(得分:5)
我知道这个问题现在可能已经过时了,但我终于在我的快速代码中解决了它,我会把它放在这里它可能对其他人有用:
要使webview.scrollview.setzoomscale
生效,zoomscale
应位于maximumzoomscale
和minimumzoomscale
属性之间。默认情况下这两个都是1,这就是缩放对你不起作用的原因。加上这个就应该没问题了:
webView.scrollview.maximumZoomScale = CGFloat(10) // or any number higher than your zoomscale
现在应该可以了。
答案 1 :(得分:0)
在布局视图之前设置内容偏移量根本没有效果。要解决此问题,您必须调用layoutIfNeed()
方法立即布置特定视图
override func viewWillAppear(animated: Bool) {
WebView.layoutIfNeeded()
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)
}
}