Как установить исходную позицию UIWebView?

Как установить начальный фокус на HTML-странице, используя UIWebView. Например, ниже находится HTML-страница. Если я загружаю это в UIWebView, он показывает от (0,0) координаты представления HTML. Но я хочу изменить начальную позицию, как описано на рисунке ниже. Я пытался изменить смещение, но безрезультатно.

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

2 ответа

Вы, вероятно, не должны жестко кодировать это, потому что по одной причине, это жестко закодировано. Если Google или какой-либо другой веб-сайт, который вы хотите отобразить, изменят свое расположение, ваши позиции будут устаревшими. И вам придется повторно отправить все ваше приложение, чтобы компенсировать это.

Я рекомендую использовать автоматическую разметку и "масштабировать страницу, чтобы соответствовать" для UIWebView,

Но ваш код точен. Убедитесь, что вы положили его в webViewDidFinishLoad: или же viewDidLoad и ваш UIWebViewDelegate & UIScrollViewDelegate добавляются в ваш заголовочный файл и вызываются в вашем файле реализации:

self.webView.delegate = self;
self.webView.scrollView.delegate = self;
  1. Поместите UIWebView в подпредставление. Универсальный UIView будет работать.
  2. При создании экземпляра UIWebView, дайте ему границы экрана с немного меньшей шириной, чем содержащий UIView. Странно, я знаю.
  3. Установите contentOffset UIWebView в методе webViewDidFinishLoad вашего UIWebViewDelegate

Следующий код работает для меня, в 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
        }
    }

Кстати... это установит начальную позицию всех URL, загруженных в это веб-представление. Если вы хотите разместить только первую страницу, вам нужно добавить дополнительную логику в webViewDidFinishLoad

Другие вопросы по тегам