【问题标题】:How to set UIWebView initial position?如何设置 UIWebView 初始位置?
【发布时间】:2015-01-25 03:31:19
【问题描述】:

如何使用 UIWebView 在 HTML 页面中设置初始焦点。例如,下面是 HTML 页面。如果我在 UIWebView 中加载它,它会从 HTML 视图的 (0,0) 坐标显示。但我想如下图所述更改起始位置。我试图改变偏移量,但没有用。

webView.scrollView.contentOffset = CGPointMake(100, 100)。

【问题讨论】:

    标签: html ios swift uiwebview offset


    【解决方案1】:

    您可能不应该对此进行硬编码,因为出于一个原因,它是硬编码的。如果谷歌或任何你想显示的网站改变了他们的布局,你的位置就会过时。而且您必须重新提交整个应用才能抵消这一点。

    我的建议是为UIWebView 使用自动布局和“缩放页面以适应”。

    但是您的代码是准确的。确保将其放在 webViewDidFinishLoad:viewDidLoad 中,并将 UIWebViewDelegateUIScrollViewDelegate 添加到头文件并在实现文件中调用:

    self.webView.delegate = self;
    self.webView.scrollView.delegate = self;
    

    【讨论】:

    • 例如我提到了 Google.com.. 我必须更改 PDF 文件的偏移量.. 我的问题也已更正..
    【解决方案2】:
    1. 将 UIWebView 放入子视图中。通用的 UIView 可以工作。
    2. 在实例化 UIWebView 时,为其设置屏幕边界,其宽度略低于包含的 UIView。很奇怪,我知道。
    3. 在 UIWebViewDelegate 的 webViewDidFinishLoad 方法中设置 UIWebView 的 contentOffset

    以下代码适用于我,在 Xcode 6.1.1 中。要进行测试,只需将此 ViewController 类设置为您的应用的根视图控制器:

       import UIKit
    
        class ViewController: UIViewController, UIWebViewDelegate {
    
            override func loadView () {
    
                let screenBounds : CGRect = UIScreen.mainScreen().bounds
    
                var slimmerBounds : CGRect = UIScreen.mainScreen().bounds
                slimmerBounds.size.width = slimmerBounds.size.width - 1
    
                let webView = UIWebView(frame: slimmerBounds)
                let url = NSURL (string: "http://google.com/")
                let req = NSURLRequest(URL: url!)
                webView.loadRequest(req)
                webView.delegate = self;
                let contentView = UIView(frame: screenBounds)
                contentView.addSubview(webView)
                self.view = contentView
            }
    
            func webViewDidFinishLoad(webView: UIWebView) {
                webView.scrollView.contentOffset = CGPointMake(0, 100)
                webView.bounds = UIScreen.mainScreen().bounds
            }
        }
    

    顺便说一句...这将设置加载到此 Web 视图中的 所有 URL 的初始位置。如果您只想定位第一页,则需要在webViewDidFinishLoad 中添加一些额外的逻辑

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2010-10-26
      • 2012-01-18
      相关资源
      最近更新 更多