您的位置:首页 > 移动开发 > IOS开发

HTML嵌入到iOS页面的开发

2017-02-26 09:07 375 查看
HTML的突飞猛进压抑了iOS和安卓的行业紧张,有位企业家说:HTML做出来的小程序在检索中,必须要知道小程序的全城,不然是找不到这个程序的,而App Store和安卓市场在程序上架的时候,设置了关键词,就可以通过关键词来搜索应用;现在HTML开发企业想到了将HTML页面嵌入到iOS和安卓中去,这是不是又要引起iOS和安卓行业的有一紧张氛围。

不过无论怎么样,该学习的知识我们都是需要来研究的;那么关于将HTML嵌入到iOS页面的开发,我们第一反应是使用UIWebview来实现,简单合理。

UIWebview的创建无需多言,无论使用比例适配,还是使用上左下右来适配,都能实现具体的效果。

那么,UIWebview加载HTML网页在开发时,会出现两种情况,一种HTML已经放置到网站上面我们只需要使用UIWebview加载网页就好;另一种我们将HTML数据网页拉入到工程中,分页展示加载本地数据。

区别只在于UIwebview加载网页时,其URL的获取,分别需要

1、

    NSString *path = [[NSBundle mainBundle] pathForResource:@"urlString" ofType:nil];

    NSURL *url = [NSURL fileURLWithPath:path];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    [webView loadRequest:request];
2、
  NSURL *url = [NSURL URLWithString:@"urlString"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    [webView loadRequest:request];
 
正常的加载完成后,关于一些属性的设置,也需要我们注意的;
1、 UIWebView里包含一个scrollview,可以向scrollview里添加一个页头以达到跟随网页滚动的效果

CGFloat headerHeight = 36.0f;

 
// 注意:y坐标必须是负数,IPHONE_WIDTH是屏幕宽度

 
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, -headerHeight, IPHONE_WIDTH, headerHeight)];

 
[_webView.scrollView addSubview:_headerView];

 
// 修改webView的scrollView的contentInset,让顶部留出一点空间

 
UIEdgeInsets edgeInset = _webView.scrollView.contentInset;

 
_webView.scrollView.contentInset = UIEdgeInsetsMake(headerView.frameHeight, edgeInset.left, edgeInset.bottom, edgeInset.right);


2、 移除滚动后的外边阴影

UIScrollView *scrollView = webView.scrollView;

for (int i = 0; i < scrollView.subviews.count ; i++) {

     UIView *view = [scrollView.subviews objectAtIndex:i];

     if ([view isKindOfClass:[UIImageView class]]) {


          view.hidden = YES ;

     }

}

3、 用UIWebView显示一些pc站的网页时,会发现网页会超出屏幕,显得很不好看,这时可以在webViewDidFinishLoad这个代理里面通过js添加一个meta:

- (void)webViewDidFinishLoad:(UIWebView *)webView

 
{

 
  
NSString *meta = [NSString stringWithFormat:@"document.getElementsByName(\"viewport\")[0].content = \"width=%f, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\"", IPHONE_WIDTH];

 
  
[webView stringByEvaluatingJavaScriptFromString:meta];

 
}

并将把UIWebView的scalesPageToFit设成NO
4、我们从已经打开的页面跳入,进行pop操作时,需要调用UIwebview的goBack方法,
5、获取当前打开页面的url
  a、
  -(void)webViewDidFinishLoad:(UIWebView *)webView {   

    NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];  

  } 

  b、

  - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
  {
      NSLog(@"====%@",request.URL);
    
      [_urlDic
setObject:request.URL
forKey:[NSString
stringWithFormat:@"%lu",_urlDic.count]];
    
      return
YES;  
  }
6、获取当前页面的title

   NSString *title = [webviewstringByEvaluatingJavaScriptFromString:@"document.title"];  

 至此的浅显研究,希望广大的博友跟帖完善,不胜感激!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: