UIWebView, загружающие прогресс и, корректируют веб-страницу для установки странице представления?

Я использую UIWebView для загрузки веб-страницы.

Существует 3 вопроса:

1. Это это возможный отследить процент прогрессирует, когда UIWebView загружает страницу?

2. Я заметил это, когда Safari, загружающий веб-страницу, текстовое поле URL отображает синий фоновый индикатор хода выполнения, чтобы сказать пользователю процент загрузки веб-страницы. Какова технология для этого?

3. Я знаю, что существует свойство scalesPageToFit

scalesPageToFit булево значение, определяющее, масштабирует ли веб-страница для соответствия представлению и пользователю, может изменить масштаб.

Я пытаюсь установить его на ДА, но похоже, что это не находится в общедоступном API и моем приложении, остановленном с черным экраном, я не уверен что не так?

9
задан luk2302 4 July 2015 в 16:50
поделиться

2 ответа

Для ответа №1)

Вместо использования UIWebView вы можете вытащить веб-страницу как объект NSData, используя NSURLConnection. Когда вы получаете начальный ответ на свой запрос от

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

, веб-сервер должен вернуть значение «ожидаемого размера содержимого» (которое должно быть включено в ответ). Тогда вы будете продолжать получать следующий метод, вызываемый каждый раз при получении данных:

 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

Продолжайте добавлять данные к существующему объекту NSMutableData. Затем вы можете сравнить размер вашего текущего объекта данных (NSMutableData.length) с ожидаемым размером ответа.

percentage = (myData.length*100)/theResponse.expectedContentSize;

Затем вы можете обновить индикатор выполнения, указав этот процент! Когда

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

запускается, используйте свои данные для вызова

[myWebView loadData:myData MIMEType:myMimeType textEncodingName:myEncoding baseURL:baseURL];

, и он загрузит все, что вы загрузили, в свое веб-представление.

21
ответ дан 4 December 2019 в 08:32
поделиться

Re #3:

Вы можете попробовать указать scalePagesToFit как YES в viewDidLoad событии UIView, которое содержит ваш webview, например:

- (void)viewDidLoad {
    self.webView.scalesPageToFit = YES;
    //other code here...
}

Для случаев, когда это не работает, обратитесь к следующему вопросу на StackOverflow: UIWebView не масштабирует содержимое под размер, где задавший вопрос (и впоследствии ответивший) дал следующее решение.

Очевидно, вы можете использовать javascript для изменения размера страницы в соответствии с браузером:

NSString *jsCommand = [NSString stringWithFormat:@"document.body.style.zoom = 1.5;"];
[webLookupView stringByEvaluatingJavaScriptFromString:jsCommand];
4
ответ дан 4 December 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: