UIWebView的使用与总结

Bison

"iOS开发就像搬运工,当搬到一定境界的时候就可以偷懒了" Bison

1
冰之依韩版女装(程序媛福利)

先前在项目中使用了UIWebView
在项目中一些比较复杂的UI布局、需后台灵活控制的界面、原网页,可以考虑UIWebView
在用它之前跟大家说下它的优缺点
优点:

  • 可跨平台
    开发一次可以部署iOS、Android等平台。
  • 发布更新快
    在服务器端发布,能够实时更新终端展示,便于快速升级以及紧急修复bug。
  • 排版布局能力强
    强大的HTML+CSS让人膜拜
    缺点:
  • 性能
    相对于原生的app来说,使用UIWebView的app相对来说性能会低一点,
    用户的体验度也会大打折扣
  • 数据通讯复杂 UIWebView与App之间进行数据通讯只能通过javascript或
    UIWebViewDelegate来进行,客户端想传参数给UIWebView修改网页或
    者从网页中获取数据都比较复杂。

具体的操作如下

更多经验请点击

UIWebView的常规使用方法:

//加载网页或者本地文件
- (void)loadRequest:(NSURLRequest *)request;

//直接加载html内容如果html中的图片等资源在本地目录注意将baseURL指向该目录
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;

//功能与上面类似
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

实现UIWebViewDelegate

主要使用到的方法
-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*) reuqest navigationType:(UIWebViewNavigationType)navigationType;//当网页视图被指示载入内容而得到通知应当返回YES这样会进行加载通过导航类型参数可以得到请求发起的原因可以是以下任意值  
    UIWebViewNavigationTypeLinkClicked //判断是否是点击事件 
    UIWebViewNavigationTypeFormSubmitted  
    UIWebViewNavigationTypeBackForward  
    UIWebViewNavigationTypeReload  
    UIWebViewNavigationTypeFormResubmitted  
    UIWebViewNavigationTypeOther 
通过
    NSURL *url = [request URL];
    NSString *curUrl= [url absoluteString];
可得到点击事件的URL

-(void)webViewDidStartLoad:(UIWebView*)webView ;//当网页视图已经开始加载一个请求后得到通知 
-(void)webViewDidFinishLoad:(UIWebView*)webView ;//当网页视图结束加载一个请求之后得到通知 
-(void)webView:(UIWebView*)webView  DidFailLoadWithError:(NSError*)error;//当在请求加载中发生错误时得到通知会提供一个NSSError对象以标识所发生错误类型  

设置背景透明:webView.backgroundColor= [UIColor clearColor];webView.opaque=NO;
自动适配屏幕:webView.scalespageToFit = YES;
自动检测网页上的电话号码,点击可拨号:
webView.detectsPhoneNumbers = YES;
与js交互

我们在webViewDidFinishLoad方法中就可以通过javascript操作界面元素了
1、获取当前页面的url

- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
}

2、获取页面title

- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];

NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];
}


博主app上线了,赶紧点此来围观吧😄


分享文章