如何设置UIWebView的初始位置?

时间:2015-01-25 03:31:19

标签: html ios swift uiwebview offset

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

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

enter image description here

2 个答案:

答案 0 :(得分:0)

你可能不应该对此进行硬编码,因为有一个原因,它是硬编码的。如果谷歌,或任何你想要显示的网站改变他们的布局,你的立场将是过时的。而且你必须重新提交你的整个应用程序才能抵消这一点。

我的建议是使用自动布局和'缩放页面以适应'对于UIWebView

但你的代码是准确的。请务必将其放入webViewDidFinishLoad:viewDidLoad以及UIWebViewDelegate& UIScrollViewDelegate已添加到您的头文件中,并在您的实现文件中调用:

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

答案 1 :(得分:0)

  1. 将UIWebView放入子视图中。通用UIView将起作用。
  2. 在实例化UIWebView时,为其提供宽度略低于包含UIView的屏幕边界。很奇怪,我知道。
  3. 在UIWebViewDelegate的webViewDidFinishLoad方法中设置UIWebView的contentOffset
  4. 以下代码适用于我,在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视图中的所有网址的初始位置。如果您只想定位第一页,则需要向webViewDidFinishLoad

    添加一些额外的逻辑