UIWebView介紹
UIWebView是iOS內(nèi)置的瀏覽器控件;
系統(tǒng)自帶的Safari瀏覽器就是通過UIWebView實(shí)現(xiàn)的;
UIWebView不但能加載遠(yuǎn)程的網(wǎng)頁資源,還能加載絕大部分的常見文件
html\htm
pdf、doc、ppt、txt
mp4
… …
eg:
加載本地PPT、HTML文件
NSURL *url = [NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/07-NSURLSession.pptx"];
//加載網(wǎng)頁
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
NSURL *url = [[NSBundle mainBundle] URLForResource:@"text.html" withExtension:nil];
//加載網(wǎng)頁
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
//設(shè)置電話、地址、網(wǎng)址等探查
self.webView.dataDetectorTypes = UIDataDetectorTypeAll;
UIWebView常見屬性和方法
// UIWebView常用的加載資源的方法
- (void)loadRequest:(NSURLRequest *)request;
//重新加載(刷新)
- (void)reload;
//停止加載
- (void)stopLoading;
//回退
- (void)goBack;
//前進(jìn)
- (void)goForward;
//需要進(jìn)行檢測(cè)的數(shù)據(jù)類型
@property(nonatomic) UIDataDetectorTypes dataDetectorTypes
//是否能回退
@property(nonatomic,readonly,getter=canGoBack) BOOL canGoBack;
//是否能前進(jìn)
@property(nonatomic,readonly,getter=canGoForward) BOOL canGoForward;
//是否正在加載中
@property(nonatomic,readonly,getter=isLoading) BOOL loading;
//是否伸縮內(nèi)容至適應(yīng)屏幕當(dāng)前尺寸
@property(nonatomic) BOOL scalesPageToFit;
UIWebView代理
//成為UIWebView的代理,遵守UIWebViewDelegate協(xié)議,就能監(jiān)聽UIWebView的加載過程
//UIWebView在發(fā)送請(qǐng)求之前,都會(huì)調(diào)用這個(gè)方法,如果返回NO,代表停止加載請(qǐng)求,返回YES,代表允許加載請(qǐng)求
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
//開始發(fā)送請(qǐng)求(加載數(shù)據(jù))時(shí)調(diào)用這個(gè)方法
- (void)webViewDidStartLoad:(UIWebView *)webView;
//請(qǐng)求完畢(加載數(shù)據(jù)完畢)時(shí)調(diào)用這個(gè)方法
- (void)webViewDidFinishLoad:(UIWebView *)webView;
//請(qǐng)求錯(cuò)誤時(shí)調(diào)用這個(gè)方法
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
關(guān)于WKWebView自適應(yīng)屏幕寬度問題
在設(shè)置wkwebview的frame時(shí),寬度直接用屏幕寬,若父視圖的寬度不是屏幕寬,就用屏幕寬度 減 相應(yīng)的值。
_wkWebView = [[WKWebView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(self.titleView.frame), [UIScreen mainScreen].bounds.size.width,100)];