UIWebView是IOS內置的浏覽器,可以浏覽網頁,打開文檔 html/htm pdf docx txt等格式的文件。 safari浏覽器就是通過UIWebView做的。
服務器將MIME的標識符等放入傳送的數據中告訴浏覽器使用那種插件讀取相關文件。
uiwebview加載各種本地文件(通過loadData方法):
- (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.docx" ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSLog(@"%@", [self mimeType:url]); //webview加載本地文件,可以使用加載數據的方式 //第一個诶參數是一個NSData, 本地文件對應的數據 //第二個參數是MIMEType //第三個參數是編碼格式 //相對地址,一般加載本地文件不使用,可以在指定的baseURL中查找相關文件。 //以二進制數據的形式加載沙箱中的文件, NSData *data = [NSData dataWithContentsOfFile:path]; [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil]; } #pragma mark 加載docx文件 - (void)loadDOCX { NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.docx" ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSLog(@"%@", [self mimeType:url]); NSData *data = [NSData dataWithContentsOfFile:path]; [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];} #pragma mark 加載pdf文件 - (void)loadPDF { NSString *path = [[NSBundle mainBundle] pathForResource:@"iOS6Cookbook.pdf" ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSLog(@"%@", [self mimeType:url]); NSData *data = [NSData dataWithContentsOfFile:path]; [self.webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"UTF-8" baseURL:nil]; } #pragma mark 加載本地文本文件 - (void)loadText { NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.txt" ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSLog(@"%@", [self mimeType:url]); NSData *data = [NSData dataWithContentsOfFile:path]; [self.webView loadData:data MIMEType:@"text/plain" textEncodingName:@"UTF-8" baseURL:nil]; } #pragma mark 加載本地html文件 - (void)loadHTML { NSString *path = [[NSBundle mainBundle] pathForResource:@"demo.html" ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSLog(@"%@", [self mimeType:url]); NSData *data = [NSData dataWithContentsOfFile:path]; [self.webView loadData:data MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:nil]; } #pragma mark 獲取指定URL的MIMEType類型 - (NSString *)mimeType:(NSURL *)url { //1NSURLRequest NSURLRequest *request = [NSURLRequest requestWithURL:url]; //2NSURLConnection //3 在NSURLResponse裡,服務器告訴浏覽器用什麼方式打開文件。 //使用同步方法後去MIMEType NSURLResponse *response = nil; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; return response.MIMEType; }
- (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; //加載路徑的第一個方式 // NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.docx" ofType:nil]; // NSURL *url = [NSURL fileURLWithPath:path]; //加載路徑的第二個方式 NSURL *url = [[NSBundle mainBundle] URLForResource:@"iOS6Cookbook.pdf" withExtension:nil]; //uiwebview加載文件的第二個方式。第一個方式在下面的注釋中。 NSURLRequest *request = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:request]; //NSLog(@"%@", [self mimeType:url]); //webview加載本地文件,可以使用加載數據的方式 //第一個诶參數是一個NSData, 本地文件對應的數據 //第二個參數是MIMEType //第三個參數是編碼格式 //相對地址,一般加載本地文件不使用,可以在指定的baseURL中查找相關文件。 //以二進制數據的形式加載沙箱中的文件, // NSData *data = [NSData dataWithContentsOfFile:path]; // // [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil]; }
UIWebView加載內容的三種方式:
1 加載本地數據文件
指定文件的MIMEType
編碼格式使用@“UTF-8”
2加載html字符串(可以加載全部或者部分html文件)
3加載NSURLRequest文件(前兩步與NSURLConnect相同)