Szukaj…
Uwagi
Funkcje delegowania UIWebView: -
Deklaracje celu C
- (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;
Utwórz instancję UIWebView
Szybki
let webview = UIWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
Cel 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;
Zgłaszanie żądania adresu URL
Załaduj zawartość do widoku internetowego z adresu url
Szybki
webview.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.google.com")!))
Cel C
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
Zatrzymaj ładowanie treści internetowych
Metoda stopLoading()
zatrzymuje bieżący proces ładowania stopLoading()
strony.
Szybki
webview.stopLoading()
Cel C
[webview stopLoading];
Załaduj ponownie bieżącą zawartość internetową
Szybki
webview.reload()
Cel C
[webview reload];
Określanie rozmiaru treści
W wielu przypadkach, na przykład podczas korzystania z widoków internetowych w komórkach widoku tabeli, ważne jest określenie rozmiaru zawartości renderowanej strony HTML. Po załadowaniu strony można to obliczyć w metodzie delegowania 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);
}
Kod wykorzystuje dodatkową sztuczkę polegającą na krótkim ustawieniu wysokości widoku internetowego na 1 przed zmierzeniem rozmiaru dopasowania. W przeciwnym razie po prostu zgłosiłby bieżący rozmiar ramki. Po pomiarze natychmiast ustawiamy wysokość na rzeczywistą wysokość zawartości.
Załaduj ciąg HTML
Widoki internetowe są przydatne do ładowania lokalnie generowanych ciągów HTML.
NSString *html = @"<!DOCTYPE html><html><body>Hello World</body></html>";
[webView loadHTMLString:html baseURL:nil];
Szybki
let htmlString = "<h1>My First Heading</h1><p>My first paragraph.</p>"
webView.loadHTMLString(htmlString, baseURL: nil)
Można określić lokalny podstawowy adres URL. Jest to przydatne w odniesieniu do obrazów, arkuszy stylów lub skryptów z pakietu aplikacji:
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]]];
W takim przypadku style.css
jest ładowany lokalnie z katalogu zasobów aplikacji. Oczywiście możliwe jest również określenie zdalnego adresu URL.
Załaduj JavaScript
Możemy uruchomić niestandardowy JavaScript na UIWebView
przy użyciu metody stringByEvaluatingJavaScriptFromString()
Ta metoda zwraca wynik uruchomienia skryptu JavaScript przekazanego w parametrze script lub zero, jeśli skrypt się nie powiedzie.
Szybki
Załaduj skrypt z String
webview.stringByEvaluatingJavaScriptFromString("alert('This is JavaScript!');")
Załaduj skrypt z pliku lokalnego
//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)
}
Cel C
Załaduj skrypt z String
[webview stringByEvaluatingJavaScriptFromString:@"alert('This is JavaScript!');"];
Załaduj skrypt z pliku lokalnego
//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];
Uwaga Metoda stringByEvaluatingJavaScriptFromString:
metoda synchronicznie czeka na zakończenie oceny JavaScript. Jeśli załadujesz zawartość internetową, której kodu JavaScript nie sprawdziłeś, wywołanie tej metody może zawiesić aplikację. Najlepszym rozwiązaniem jest przyjęcie WKWebView
klasę i używać jej evaluateJavaScript:completionHandler:
metodę zamiast. Ale WKWebView
jest dostępny z iOS 8.0 i nowszych.
Załaduj pliki dokumentów, takie jak .pdf, .txt, .doc itp.
Zamiast stron internetowych możemy również załadować pliki dokumentów do iOS WebView, takie jak .pdf, .txt, .doc itp. Metoda loadData
służy do załadowania NSData
do przeglądarki internetowej.
Szybki
//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())
Cel 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]];
Niech klikalne będą linki wewnątrz UIWebview
W vc.h
@interface vc : UIViewController<UIWebViewDelegate>
w 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;
}
Załaduj lokalny plik HTML do webView
Najpierw dodaj plik HTML do swojego projektu (jeśli zostaniesz poproszony o wybranie opcji dodania pliku, wybierz Kopiuj elementy w razie potrzeby )
Poniższy wiersz kodu ładuje zawartość pliku HTML do webView
webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
- Jeśli plik HTML nazywa się index.html, zastąp SWÓJ PLIK HTML indeksem
- Można użyć tego kodu albo w viewDidLoad () lub viewDidAppear () lub jakiejkolwiek innej funkcji