WKWebView 在 tableview 上的展示

匿名 (未验证) 提交于 2019-12-03 00:22:01

创建 WKWebView

        _webView = [[WKWebView alloc]initWithFrame:self.view.bounds];         _webHeight = _webView.height;         _webView.backgroundColor = [UIColor whiteColor];         _webView.UIDelegate = self;         _webView.navigationDelegate = self;         _webView.scrollView.bounces = NO;         _webView.scrollView.scrollEnabled = NO;         _webView.scrollView.showsHorizontalScrollIndicator = NO;         _webView.scrollView.delegate = self;

WKWebView加载 html 数据:

NSString *result = [NSString stringWithFormat:@"<img style='display: block; max-width: %.0f'",kScreenWidth];         id courseData = self.object;         NSAttributedString *priceStr = [ECFormatHelper attributedStringForPromotionPrice:[courseData valueForKey:@"price"] decimal:2 smallFontSize:16];         NSString *subtitle = [CYDataHelper isNull:[courseData valueForKey:@"subtitle"]]?@"还没有设置课程简介":[courseData valueForKey:@"subtitle"];           NSString *title = [CYDataHelper isNull:[courseData valueForKey:@"title"]]?@"还没有设置课程标题":[courseData valueForKey:@"title"];         NSString *teacher = [CYDataHelper isNull:[courseData valueForKey:@"teacher"]]?@"暂无":[courseData valueForKey:@"teacher"];           NSDictionary *dict = @{@"title":title,@"subtitle": subtitle,@"num":@([[courseData valueForKey:@"num"]integerValue]),@"expiryDay":@([[courseData valueForKey:@"expiryDay"]integerValue]),@"teacher":teacher};         // 这里判断 数据 空值的情况 <null>         NSString *header = @"<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><meta  name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\"/><meta name=\"apple-mobile-web-app-capable\" content=\"yes\"><meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\"><link rel=\"stylesheet\" type=\"text/css\" /><style type=\"text/css\"> </style></head>";          NSString *cssStr = [NSString stringWithFormat:@"<html>%@<body>",header];         // 课程详情         NSString *content = [NSString stringWithFormat:@"%@%@%@%@",                              [CYDataHelper isNull:[courseData valueForKey:@"about"]]?@"":[courseData valueForKey:@"about"],                              [CYDataHelper isNull:[courseData valueForKey:@"audiences"]]?@"":[courseData valueForKey:@"audiences"] ,                              [CYDataHelper isNull:[courseData valueForKey:@"goals"]]?@"":[courseData valueForKey:@"goals"],                              [CYDataHelper isNull:[courseData valueForKey:@"teacherInfo"]]?@"":[courseData valueForKey:@"teacherInfo"]                              ];         if (content.length > 0) {             content = [NSString stringWithFormat:@"%@%@",@"<div style=\"color: #454545; font-size: 18px; font:Arial;\">内容简介</div>",content];          }         // 把里面的图片标签遍历替换         content = [content stringByReplacingOccurrencesOfString:@"<img" withString:result];         NSString *detailHtml = [NSString stringWithFormat:@"%@%@%@",cssStr,                                content,@"</body></html>"];         [_dataSource addObjectsFromArray:@[priceStr,dict,detailHtml]];          [self.webView loadHTMLString:detailHtml baseURL:nil];

WKWebView代理方法:

#pragma mark  ---  WKNavigationDelegate  --- - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {      [_webView  evaluateJavaScript:@"document.body.offsetHeight"  completionHandler:^(id  _Nullable  result,  NSError  *  _Nullable  error)  {         //  加20像素是为了预留出边缘         CGFloat height = [result  doubleValue] + 20;         //  设置一个高度属性,赋值后便于设置cell的高度         _webHeight = MAX(self.webView.height, height);         //  设置cell上子视图的frame,主要是高度         _webView.frame = CGRectMake(0, 0, kScreenWidth, _webHeight);         _scrollView.frame = CGRectMake(0, 0, kScreenWidth, height);         _scrollView.contentSize = CGSizeMake(kScreenWidth, height);         //  获取了高度之后,要更新webview所在的cell,其他的cell就不用更新了,这样能更节省资源         [self.tableView  reloadRowsAtIndexPaths:[NSArray arrayWithObjects:[NSIndexPath  indexPathForRow:2  inSection:0], nil]  withRowAnimation:UITableViewRowAnimationNone];     }];   }

创建一个 scrollview ,这样可以添加手势,双击放大倍数进行查看,webview 加在 scrollview 上。

- (UIScrollView *)scrollView {     if (!_scrollView) {         _scrollView = [[UIScrollView alloc]init];         _scrollView.delegate = self;         _scrollView.zoomScale = 1;         _scrollView.maximumZoomScale = 10;         _scrollView.tag = 1000;         [_scrollView addSubview:self.webView];     }     return _scrollView; }

然后在 tableview 的代理方法- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中:在指定的
[cell.contentView addSubview:self.scrollView];

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!