Как установить исходную позицию 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;
- Поместите UIWebView в подпредставление. Универсальный UIView будет работать.
- При создании экземпляра UIWebView, дайте ему границы экрана с немного меньшей шириной, чем содержащий UIView. Странно, я знаю.
- Установите 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