Поиск…
замечания
Функции делегата UIWebView: -
Задачи-C Declerations
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType;
- (void)webView:(UIWebView *)webView
didFailLoadWithError:(NSError *)error;
- (void)webViewDidFinishLoad:(UIWebView *)webView;
- (void)webViewDidStartLoad:(UIWebView *)webView;
Создание экземпляра UIWebView
стриж
let webview = UIWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
Objective-C
UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
//Alternative way of defining frame for UIWebView
UIWebView *webview = [[UIWebView alloc] init];
CGRect webviewFrame = webview.frame;
webviewFrame.size.width = 320;
webviewFrame.size.height = 480;
webviewFrame.origin.x = 0;
webviewFrame.origin.y = 0;
webview.frame = webviewFrame;
Создание запроса URL
Загружать контент в веб-просмотр из url
адреса
стриж
webview.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.google.com")!))
Objective-C
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
Остановка загрузки веб-содержимого
Метод stopLoading()
останавливает текущий процесс загрузки webview.
стриж
webview.stopLoading()
Objective-C
[webview stopLoading];
Обновить текущий веб-контент
стриж
webview.reload()
Objective-C
[webview reload];
Определение размера содержимого
Во многих случаях, например, при использовании веб-представлений в ячейках таблицы, важно определить размер содержимого отображаемой HTML-страницы. После загрузки страницы это можно вычислить в методе делегата UIWebViewDelegate
:
- (void) webViewDidFinishLoad:(UIWebView *) aWebView {
CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;
NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
}
В коде используется дополнительный трюк, позволяющий коротко установить высоту веб-представления на 1 до измерения размера фитинга. В противном случае он просто сообщит о текущем размере кадра. После измерения мы сразу установили высоту на фактическую высоту содержимого.
Загрузить HTML-строку
Веб-представления полезны для загрузки локально сгенерированных строк HTML.
NSString *html = @"<!DOCTYPE html><html><body>Hello World</body></html>";
[webView loadHTMLString:html baseURL:nil];
стриж
let htmlString = "<h1>My First Heading</h1><p>My first paragraph.</p>"
webView.loadHTMLString(htmlString, baseURL: nil)
Может быть указан локальный базовый URL. Это полезно для ссылки на изображения, таблицы стилей или сценарии из набора приложений:
NSString *html = @"<!DOCTYPE html><html><head><link href='style.css' rel='stylesheet' type='text/css'></head><body>Hello World</body></html>";
[self loadHTMLString:html baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
В этом случае style.css
загружается локально из каталога ресурсов приложения. Конечно, можно указать удаленный URL.
Загрузить JavaScript
Мы можем запускать пользовательский JavaScript в UIWebView
используя метод stringByEvaluatingJavaScriptFromString()
Этот метод возвращает результат запуска скрипта JavaScript, переданного в параметре сценария, или nil, если сбой сценария.
стриж
Загрузить скрипт из String
webview.stringByEvaluatingJavaScriptFromString("alert('This is JavaScript!');")
Загрузить сценарий из локального файла
//Suppose you have javascript file named "JavaScript.js" in project.
let filePath = NSBundle.mainBundle().pathForResource("JavaScript", ofType: "js")
do {
let jsContent = try String.init(contentsOfFile: filePath!, encoding: NSUTF8StringEncoding)
webview.stringByEvaluatingJavaScriptFromString(jsContent)
}
catch let error as NSError{
print(error.debugDescription)
}
Objective-C
Загрузить скрипт из String
[webview stringByEvaluatingJavaScriptFromString:@"alert('This is JavaScript!');"];
Загрузить сценарий из локального файла
//Suppose you have javascript file named "JavaScript.js" in project.
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"JavaScript" ofType:@"js"];
NSString *jsContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[webview stringByEvaluatingJavaScriptFromString:jsContent];
Примечание. Метод stringByEvaluatingJavaScriptFromString:
ждет синхронного завершения для оценки JavaScript. Если вы загружаете веб-контент, код JavaScript которого вы не проверили, вызов этого метода может повесить ваше приложение. Лучшая практика заключается в принятии WKWebView
класса и использовать его evaluateJavaScript:completionHandler:
метод. Но WKWebView
доступен от iOS 8.0 и более поздних WKWebView
.
Загрузите файлы документов, такие как .pdf, .txt, .doc и т. Д.
Вместо веб-страниц мы также можем загружать файлы документов в iOS WebView, например .pdf, .txt, .doc и т. loadData
Метод loadData
используется для загрузки NSData
в webview.
стриж
//Assuming there is a text file in the project named "home.txt".
let localFilePath = NSBundle.mainBundle().pathForResource("home", ofType:"txt");
let data = NSFileManager.defaultManager().contentsAtPath(localFilePath!);
webview.loadData(data!, MIMEType: "application/txt", textEncodingName:"UTF-8" , baseURL: NSURL())
Objective-C
//Assuming there is a text file in the project named "home.txt".
NSString *localFilePath = [[NSBundle mainBundle] pathForResource:@"home" ofType:@"txt"];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:localFilePath];
[webview loadData:data MIMEType:@"application/txt" textEncodingName:@"UTF-8" baseURL:[NSURL new]];
Сделать ссылки Что внутри UIWebview clickable
В vc.h
@interface vc : UIViewController<UIWebViewDelegate>
в vc.m
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if (navigationType == UIWebViewNavigationTypeLinkClicked){
//open it on browser if you want to open it in same web view remove return NO;
NSURL *url = request.URL;
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
return NO;
}
return YES;
}
Загружать локальный HTML-файл в webView
Во-первых, добавьте файл HTML в свой проект (если вас попросят выбрать параметры для добавления файла, выберите « Копировать элементы», если это необходимо )
Следующая строка кода загружает содержимое HTML-файла в webView
webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
- Если ваш HTML-файл называется index.html, замените ВАШ HTML-ФАЙЛ индексом
- Вы можете использовать этот код либо в viewDidLoad (), либо в viewDidAppear () или любой другой функции