Swift UIWebView 初始缩放比例
Posted
技术标签:
【中文标题】Swift UIWebView 初始缩放比例【英文标题】:Swift UIWebView initial zoom scale 【发布时间】: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 会显示。我对任何解决方案都非常满意。
【问题讨论】:
【参考方案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 视图 我得到了另一个答案,我解决了谢谢你..来自***.com/questions/8028051/…以上是关于Swift UIWebView 初始缩放比例的主要内容,如果未能解决你的问题,请参考以下文章
使用 UIWebView+AFNetworking 时链接如下
如何使用 Swift 缩放 HTML 内容以使其适合手机宽度?