iOSiOS基础扩展iOS功能模块收录

webView与tableView的自适应问题

2016-07-02  本文已影响1034人  发现号ZC

########

@property (nonatomic,strong)UITableView *tableView;
@property (nonatomic,strong)UIWebView *webView;

- (UITableView *)tableView{
    if (!_tableView) {
        _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, kWidth, kHeight) style:UITableViewStylePlain];
        _tableView.delegate = self;
        _tableView.dataSource = self;
#注意,这两行代码是TableView的自适应高度
        _tableView.estimatedRowHeight = 100;
        _tableView.rowHeight = UITableViewAutomaticDimension;
    }
    return _tableView;

}
-(UIWebView *)webView{
    if (!_webView) {
#注意,webView这里高度不能为0
        _webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, kWidth, 100)];
        _webView.scrollView.bounces = NO;
        _webView.scrollView.bouncesZoom = NO;
        _webView.delegate = self;
    }
    return _webView;
}

#注意webView走这个协议方法
- (void)webViewDidStartLoad:(UIWebView *)webView{
 
}
//正则表达式,自适应webView适应屏幕,图片文字自适应屏幕
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    
    NSString *js = @"function imgAutoFit() { \
    var imgs = document.getElementsByTagName('img'); \
    for (var i = 0; i < imgs.length; ++i) {\
    var img = imgs[i];   \
    img.style.maxWidth = %f;   \
    } \
    }";
    js = [NSString stringWithFormat:js, [UIScreen mainScreen].bounds.size.width - 20];
    
    [webView stringByEvaluatingJavaScriptFromString:js];
    [webView stringByEvaluatingJavaScriptFromString:@"imgAutoFit()"];

    //获取到webview的高度
    CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
    self.webView.frame = CGRectMake(self.webView.frame.origin.x,self.webView.frame.origin.y, self.view.frame.size.width, height);
    #注意,在这里再添加到TableView上,否则无效
    self.tableView.tableHeaderView = self.webView;
    [self.tableView reloadData];
    
    
}

上一篇下一篇

猜你喜欢

热点阅读