Recherche…
Remarques
Fonctions déléguées UIWebView: -
Décélérations Objective-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;
Créer une instance UIWebView
Rapide
let webview = UIWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
Objectif 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;
Faire une demande d'URL
Charger le contenu dans WebView à partir de l' url
Rapide
webview.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.google.com")!))
Objectif c
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
Arrêtez de charger le contenu Web
La méthode stopLoading()
arrête le processus de chargement en cours de la vue Web.
Rapide
webview.stopLoading()
Objectif c
[webview stopLoading];
Recharger le contenu Web actuel
Rapide
webview.reload()
Objectif c
[webview reload];
Détermination de la taille du contenu
Dans de nombreux cas, par exemple lors de l'utilisation de vues Web dans des cellules de vue tableau, il est important de déterminer la taille du contenu de la page HTML rendue. Après avoir chargé la page, cela peut être calculé dans la méthode déléguée 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);
}
Le code utilise une astuce supplémentaire pour régler rapidement la hauteur de la vue Web à 1 avant de mesurer la taille du raccord. Sinon, il rapporterait simplement la taille de l'image actuelle. Après la mesure, nous réglons immédiatement la hauteur à la hauteur réelle du contenu.
Charger une chaîne HTML
Les vues Web sont utiles pour charger des chaînes HTML générées localement.
NSString *html = @"<!DOCTYPE html><html><body>Hello World</body></html>";
[webView loadHTMLString:html baseURL:nil];
Rapide
let htmlString = "<h1>My First Heading</h1><p>My first paragraph.</p>"
webView.loadHTMLString(htmlString, baseURL: nil)
Une URL de base locale peut être spécifiée. Ceci est utile pour référencer des images, des feuilles de style ou des scripts du lot d'applications:
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]]];
Dans ce cas, style.css
est chargé localement à partir du répertoire de ressources de l'application. Bien sûr, il est également possible de spécifier une URL distante.
Charger JavaScript
Nous pouvons exécuter du code JavaScript personnalisé sur un UIWebView
à l'aide de la méthode stringByEvaluatingJavaScriptFromString()
. Cette méthode renvoie le résultat de l'exécution du script JavaScript transmis dans le paramètre de script, ou nul si le script échoue.
Rapide
Charger le script depuis la chaîne
webview.stringByEvaluatingJavaScriptFromString("alert('This is JavaScript!');")
Charger le script à partir du fichier local
//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)
}
Objectif c
Charger le script depuis la chaîne
[webview stringByEvaluatingJavaScriptFromString:@"alert('This is JavaScript!');"];
Charger le script à partir du fichier local
//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];
Remarque La méthode stringByEvaluatingJavaScriptFromString:
attend que l'évaluation de JavaScript soit terminée. Si vous chargez du contenu Web dont vous n'avez pas vérifié le code JavaScript, l'appel de cette méthode risque de bloquer votre application. La meilleure pratique consiste à adopter la classe WKWebView
et à utiliser la WKWebView
evaluateJavaScript:completionHandler:
place. Mais WKWebView
est disponible depuis iOS 8.0 et versions ultérieures.
Charger des fichiers de documents comme .pdf, .txt, .doc, etc.
Au lieu de pages Web, nous pouvons également charger les fichiers de document dans iOS WebView comme .pdf, .txt, .doc, etc. loadData
méthode loadData
est utilisée pour charger NSData
dans Webview.
Rapide
//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())
Objectif 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]];
Créer des liens cliquables dans UIWebview
Dans vc.h
@interface vc : UIViewController<UIWebViewDelegate>
dans 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;
}
Charger le fichier HTML local dans webView
Tout d'abord, ajoutez le fichier HTML à votre projet (si vous êtes invité à choisir des options pour ajouter le fichier, sélectionnez Copier les éléments si nécessaire ).
La ligne de code suivante charge le contenu du fichier HTML dans le WebView
webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
- Si votre fichier HTML s'appelle index.html, remplacez votre fichier HTML par un index
- Vous pouvez utiliser ce code dans viewDidLoad () ou viewDidAppear () ou toute autre fonction