Я использую UIWebView для загрузки веб-страницы.
Существует 3 вопроса:
1. Это это возможный отследить процент прогрессирует, когда UIWebView загружает страницу?
2. Я заметил это, когда Safari, загружающий веб-страницу, текстовое поле URL отображает синий фоновый индикатор хода выполнения, чтобы сказать пользователю процент загрузки веб-страницы. Какова технология для этого?
3. Я знаю, что существует свойство scalesPageToFit
scalesPageToFit булево значение, определяющее, масштабирует ли веб-страница для соответствия представлению и пользователю, может изменить масштаб.
Я пытаюсь установить его на ДА, но похоже, что это не находится в общедоступном API и моем приложении, остановленном с черным экраном, я не уверен что не так?
Для ответа №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];
, и он загрузит все, что вы загрузили, в свое веб-представление.
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];