關(guān)于更多網(wǎng)頁加載:WKWebKit,Safari,SafariViewController
這里只講UIWebView,使用簡單,性能一般差。
下面的分開講。
WKWebView:iOS8 新框架:WebKit
SafariViewController:iOS9新框架:SafariServices
還有就是直接調(diào)用 Safari:
NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];
[[UIApplication sharedApplication] openURL:url];
加載數(shù)據(jù)
- 1 url 加載
NSURL* url = [NSURL URLWithString:@"http://www.baidu.com"];//創(chuàng)建URL
NSURLRequest* request = [NSURLRequest requestWithURL:url];//創(chuàng)建NSURLRequest
[webView loadRequest:request];//加載
- 2 根據(jù)本地html 文本加載
[webView loadHTMLString:@"htmlString" baseURL:nil];
- 3 加載本地數(shù)據(jù) NSData
// 可以加載 pdf,gif,docx txt等
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
[webView loadData:[NSData dataWithContentsOfFile:path] MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:[NSURL URLWithString:@""]];
// 更多 MIMEType
// http://tool.oschina.net/commons?type=22013-05-17
一些屬性設(shè)置
// 內(nèi)容顯示范圍設(shè)置
[webView.scrollView setContentInset:UIEdgeInsetsMake(10, 100, 10, 100)];
webView.scalesPageToFit = YES;// 是否允許縮放?
webView.dataDetectorTypes = UIDataDetectorTypeAll; // 自動識別 網(wǎng)址,電話等
webView.allowsInlineMediaPlayback = YES; // 支持h5 播放
webView.mediaPlaybackRequiresUserAction = YES;// h5 播放控制
webView.mediaPlaybackAllowsAirPlay = YES;// 。。。
webView.suppressesIncrementalRendering = YES;// webView 一次性加載,沒讀取完成就不加載
webView.keyboardDisplayRequiresUserAction = YES;// 允許使用鍵盤
webView.paginationMode = UIWebPaginationModeUnpaginated;
/*
typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
UIWebPaginationModeUnpaginated,
UIWebPaginationModeLeftToRight,
UIWebPaginationModeTopToBottom,
UIWebPaginationModeBottomToTop,
UIWebPaginationModeRightToLeft
};翻頁模式
*/
webView.paginationBreakingMode = UIWebPaginationBreakingModeColumn;
/*
typedef NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {
UIWebPaginationBreakingModePage,
UIWebPaginationBreakingModeColumn
};分頁模式
*/
// 判斷
if (webView.canGoBack) {
NSLog(@"goback");
}
if (webView.canGoForward) {
NSLog(@"goforward");
}
if (webView.loading) {
NSLog(@"loading");
}
// 事件 操作
// [webView stopLoading];
// [webView reload];
// [webView goBack];
// [webView goForward];
// iOS 9 的屬性
webView.allowsPictureInPictureMediaPlayback = YES;// 畫中畫
webView.allowsLinkPreview = YES;// 3d touch 預(yù)覽 相關(guān)
代理
// 判斷,是否允許加載
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
/*
typedef NS_ENUM(NSInteger, UIWebViewNavigationType) {
UIWebViewNavigationTypeLinkClicked,
UIWebViewNavigationTypeFormSubmitted,
UIWebViewNavigationTypeBackForward,
UIWebViewNavigationTypeReload,
UIWebViewNavigationTypeFormResubmitted,
UIWebViewNavigationTypeOther
};
*/
if(navigationType == UIWebViewNavigationTypeLinkClicked) {
//判斷是否是點(diǎn)擊鏈接
return NO;
} else {
return YES;
}
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"start");
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"finish");
// 也是一些屬性內(nèi)容
NSLog(@"%f",webView.pageLength);
NSLog(@"%f",webView.gapBetweenPages);
NSLog(@"%zi",webView.pageCount);
NSLog(@"%@",webView.request);
[webView stringByEvaluatingJavaScriptFromString:@""];// 使用js 代碼執(zhí)行操作
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error {
NSLog(@"error");
}
1