1 概念性知識
01 webView是有缺點的盲厌,會導致內(nèi)存泄露,而且這個問題是它系統(tǒng)本身的問題祸泪。
02 手機上面的safai其實就是用webView來實現(xiàn)的
03 現(xiàn)在的開發(fā)并不完全是原生的開發(fā)吗浩,而更加傾向于原生+Html5的方式
04 webView是OC代碼和html代碼之間進行交互的橋梁
2 代碼相關
/*A*網(wǎng)頁操控相關方法**/
[self.webView goBack];? ? ? 回退
[self.webView goForward];? 前進
[self.webView reload];? ? ? 刷新
//設置是否能夠前進和回退
self.goBackBtn.enabled = webView.canGoBack;
self.fowardBtn.enabled = webView.canGoForward;
/*B*常用的屬性設置**/
self.webView.scalesPageToFit = YES; 設置網(wǎng)頁自動適應
self.webView.dataDetectorTypes = UIDataDetectorTypeAll; 設置檢測網(wǎng)頁中的格式類型,all表示檢測所有類型包括超鏈接没隘、電話號碼懂扼、地址等。
self.webView.scrollView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
/*C*相關代理方法**/
//每當將加載請求的時候調(diào)用該方法右蒲,返回YES 表示加載該請求阀湿,返回NO 表示不加載該請求
//可以在該方法中攔截請求
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
return ![request.URL.absoluteString containsString:@"dushu"];
}
//開始加載網(wǎng)頁,不僅監(jiān)聽我們指定的請求瑰妄,還會監(jiān)聽內(nèi)部發(fā)送的請求
-(void)webViewDidStartLoad:(UIWebView *)webView
//網(wǎng)頁加載完畢之后會調(diào)用該方法
-(void)webViewDidFinishLoad:(UIWebView *)webView
//網(wǎng)頁加載失敗調(diào)用該方法
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
/*D*其它知識點-加載本地資源**/
NSURL *url = [[NSBundle mainBundle] URLForResource:@"text.html" withExtension:nil];
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self test1];
}
-(void)test1
{
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
//加載網(wǎng)頁
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
}
-(void)test2
{
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
//加載網(wǎng)頁
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
self.webView.scrollView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0);
}
//加載本地的文件
-(void)test3
{
NSURL *url = [NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/07-NSURLSession.pptx"];
//加載網(wǎng)頁
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
}
-(void)test4
{
NSURL *url = [NSURL URLWithString:@"http://www.520it.com/"];
//加載網(wǎng)頁
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
//設置時候自適應
self.webView.scalesPageToFit = YES;
}
-(void)test5
{
NSURL *url = [[NSBundle mainBundle] URLForResource:@"text.html" withExtension:nil];
//加載網(wǎng)頁
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
//設置時候自適應
self.webView.dataDetectorTypes = UIDataDetectorTypeAll;
}
@end
#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *goBack;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *goForward;
@end
@implementation ViewController
#pragma mark ----------------------
#pragma mark Life Cycle
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//加載網(wǎng)頁
[self.webView loadRequest:request];
//設置代理
self.webView.delegate = self;
}
#pragma mark ----------------------
#pragma mark Events
- (IBAction)goBackBtnClick:(id)sender
{
[self.webView goBack];
}
- (IBAction)goForwardBtnClick:(id)sender
{
[self.webView goForward];
}
- (IBAction)reloadBtnClick:(id)sender
{
[self.webView reload];
}
#pragma mark ----------------------
#pragma mark UIWebViewDelegate
//即將加載某個請求的時候調(diào)用
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"%@",request.URL.absoluteString);
//簡單的請求攔截處理
NSString *strM = request.URL.absoluteString;
if ([strM containsString:@"360"]) {
return NO;
}
return YES;
}
//1.開始加載網(wǎng)頁的時候調(diào)用
-(void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"webViewDidStartLoad");
}
//2.加載完成的時候調(diào)用
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"webViewDidFinishLoad");
self.goBack.enabled = self.webView.canGoBack;
self.goForward.enabled = self.webView.canGoForward;
}
//3.加載失敗的時候調(diào)用
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"didFailLoadWithError");
}
@end