Sök…
Anmärkningar
UIWebView Delegate-funktioner: -
Objektiva C-deklarationer
- (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;
Skapa en UIWebView-instans
Snabb
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;
Skapa en URL-begäran
Ladda innehåll i webbvisning från url
Snabb
webview.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.google.com")!))
Objective-C
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
Sluta ladda webbinnehåll
Metod stopLoading()
stoppar den aktuella laddningsprocessen för webbvyn.
Snabb
webview.stopLoading()
Objective-C
[webview stopLoading];
Ladda om aktuellt webbinnehåll
Snabb
webview.reload()
Objective-C
[webview reload];
Bestämma innehållsstorlek
I många fall, till exempel när du använder webbvyer i tabellvyceller, är det viktigt att bestämma innehållsstorleken på den återgivna HTML-sidan. Efter laddning av sidan kan detta beräknas med 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);
}
Koden använder ett ytterligare trick för att kort inställa höjden på webbsidan till 1 innan mätstorleken mäts. Annars rapporterar den helt enkelt den aktuella bildstorleken. Efter mätning ställer vi omedelbart höjden på den faktiska innehållshöjden.
Ladda HTML-sträng
Webbvyer är användbara för att ladda lokalt genererade HTML-strängar.
NSString *html = @"<!DOCTYPE html><html><body>Hello World</body></html>";
[webView loadHTMLString:html baseURL:nil];
Snabb
let htmlString = "<h1>My First Heading</h1><p>My first paragraph.</p>"
webView.loadHTMLString(htmlString, baseURL: nil)
En lokal webbadress kan anges. Detta är användbart för att referera till bilder, stilark eller skript från appbunten:
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]]];
I detta fall laddas style.css
lokalt från appens resurskatalog. Naturligtvis är det också möjligt att ange en fjärradress.
Ladda JavaScript
Vi kan köra anpassad JavaScript på en UIWebView
hjälp av metoden stringByEvaluatingJavaScriptFromString()
Den här metoden returnerar resultatet av att köra JavaScript-skriptet som UIWebView
i stringByEvaluatingJavaScriptFromString()
, eller noll om skriptet misslyckas.
Snabb
Ladda skript från String
webview.stringByEvaluatingJavaScriptFromString("alert('This is JavaScript!');")
Ladda skript från lokal fil
//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
Ladda skript från String
[webview stringByEvaluatingJavaScriptFromString:@"alert('This is JavaScript!');"];
Ladda skript från lokal fil
//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];
Obs! stringByEvaluatingJavaScriptFromString:
-metoden väntar synkront för att JavaScript-utvärderingen ska slutföras. Om du laddar webbinnehåll vars JavaScript-kod du inte har vettat kan du använda din metod att hänga din app. Bästa praxis är att anta WKWebView
klassen och använda dess evaluateJavaScript:completionHandler:
-metod istället. Men WKWebView
är tillgängligt från iOS 8.0 och senare.
Ladda dokumentfiler som .pdf, .txt, .doc etc.
Istället för webbsidor kan vi också ladda dokumentfilerna i iOS WebView som .pdf, .txt, .doc osv. loadData
metoden används för att ladda NSData
i webview.
Snabb
//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]];
Gör länkar som finns i UIWebview klickbara
I vc.h
@interface vc : UIViewController<UIWebViewDelegate>
i 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;
}
Ladda lokal HTML-fil i webView
Lägg först HTML-filen till ditt projekt (om du blir ombedd att välja alternativ för att lägga till filen, välj Kopiera objekt vid behov )
Följande kodrad laddar in HTML-filens innehåll i webView
webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
- Om din HTML-fil heter index.html, ersätt DIN HTML-FIL med index
- Du kan använda den här koden antingen i viewDidLoad () eller viewDidAppear () eller någon annan funktion