wkwebview 字体大小调整 网页内容高度计算
来源:互联网 发布:网络签约写手的收入 编辑:程序博客网 时间:2024/05/16 17:08
现有一个需求,,将一个网页作为tableview的头视图,,tableview列表展示评论内容,,这就要求计算出webview的高度。。此外,,有一个字体调整大小的按钮,,选择不同大小的字体,,头视图高度要变化。。
遇到的问题,,字体有小到大,,网页高度计算没有问题,,但字体由大到小,,网页高度不变。。所以出现一大块空白。。
以下总结处理方法。。思路是字体有小到大,,不做处理,,字体由大到小,,就当前网页移除,,重新添加并设置字体大小。。
- (void)viewDidLoad {
[superviewDidLoad];
self.webfont =1;/// 1:小号字体,2:中号字体,3:大号字体
[selfcreateView];
}
- (void)createView{
self.newsTableView = [[UITableViewalloc] initWithFrame:CGRectMake(0,64, WIDTH, HEIGHT-64-49)style:UITableViewStylePlain];
[self.viewaddSubview:self.newsTableView];
self.newsTableView.backgroundColor = [UIColorclearColor];
self.newsTableView.delegate = self;
self.newsTableView.dataSource = self;
[selfcreateWebView];
}
- (void)createWebView{
self.newsWebView = [[WKWebViewalloc] init];
self.newsWebView.frame =CGRectMake(0,0, WIDTH,HEIGHT);
self.newsWebView.navigationDelegate = self;
self.newsWebView.scrollView.scrollEnabled = NO;
self.newsWebView.scrollView.backgroundColor = [UIColorclearColor];
self.newsWebView.backgroundColor = [UIColorclearColor];
[self.newsWebViewsetOpaque:NO];
/// 添加计算网页高度的监听
[self.newsWebViewaddObserver:selfforKeyPath:@"scrollView.contentSize"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOldcontext:@"DJWebKitContext"];
self.newsTableView.tableHeaderView = self.newsWebView;
}
- (void)reloadWebview:(NSString *)html{
[self.newsWebViewloadHTMLString:html baseURL:nil];
}
#pragma mark 网页开始加载
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
}
#pragma mark 网页加载完成
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
/// 网页加载完成后,,设置字体大小
if (self.webfont ==1) {
[self.newsWebViewevaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '100%'"completionHandler:nil];
}elseif (self.webfont ==2){
[self.newsWebViewevaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '120%'"completionHandler:nil];
}else{
[self.newsWebViewevaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '140%'"completionHandler:nil];
}
}
#pragma mark 监听网页的内容高度
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if (!self.newsWebView.isLoading) {
if([keyPathisEqualToString:@"scrollView.contentSize"]){
self.newsWebView.frame = CGRectMake(0,0, WIDTH,self.newsWebView.scrollView.contentSize.height);
self.newsTableView.tableHeaderView = self.newsWebView;
}
}
}
//// 选择字体大小的按钮的点击方法- (void)addbuttonAction{
UIAlertController * alertVC = [UIAlertControlleralertControllerWithTitle:@"设置字体大小"message:nilpreferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction * cancelAction = [UIAlertActionactionWithTitle:@"取消"style:UIAlertActionStyleCancelhandler:nil];
UIAlertAction * bigAction = [UIAlertActionactionWithTitle:@"大"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *action) {
/// 字体从小号,,中号 到大号
[self.newsWebViewevaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '140%'"completionHandler:nil];
self.webfont =3;
}];
UIAlertAction * middleAction = [UIAlertActionactionWithTitle:@"中"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *action) {
if (self.webfont ==1) {
/// 字体从小号到中号
[self.newsWebViewevaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '120%'"completionHandler:nil];
}elseif (self.webfont ==3){
//// 字体从大号到中号
[selfwebDeallocandRecreate];
}
self.webfont =2;
}];
UIAlertAction * smallAction = [UIAlertActionactionWithTitle:@"小"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *action) {
if (self.webfont ==2) {
/// 字体从中号到小号
[selfwebDeallocandRecreate];
}elseif (self.webfont ==3){
/// 字体从大号到小号
[selfwebDeallocandRecreate];
}
self.webfont =1;
}];
[alertVC addAction:cancelAction];
[alertVC addAction:bigAction];
[alertVC addAction:middleAction];
[alertVC addAction:smallAction];
[selfpresentViewController:alertVCanimated:YEScompletion:nil];
}
- (void)webDeallocandRecreate{
/// 移除网页高度计算的监听
[self.newsWebViewremoveObserver:selfforKeyPath:@"scrollView.contentSize"context:@"DJWebKitContext"];
self.newsWebView.navigationDelegate = nil;
self.newsTableView.tableHeaderView = nil;
self.newsWebView =nil;
[self.newsWebViewremoveFromSuperview];
[selfcreateWebView];
[selfreloadWebview:self.webHtml];
}
- wkwebview 字体大小调整 网页内容高度计算
- WKWebView获取内容高度
- 对于wkwebview网页高度计算的补充/网页高度计算的另一种简单方法
- js调整网页字体大小
- UIWebView&WKWebView获取网页高度
- 计算UIWebView加载网页的内容高度
- iOS UIWebView、WKWebView获取内容高度
- 如何动态计算WKWebView的高度
- UIWebView和WKWebView的高度计算
- 网页内容的调整
- WKWebview 获取网页高度,图片点击查看,网页链接点击
- 网页高度计算
- 根据文字和字体大小计算高度
- iOS 获取WKWebView内容高度做H5原生连接
- 动态调整UITableViewCell的高度及字体大小设置
- 根据内容自动调整IFrame高度
- 根据内容调整iframe的高度
- 根据内容调整iframe的高度
- iBase4J简单应用添加模块
- POJ2253 Frogger
- Git项目转移
- finecmsV5.0.8 \finecms\dayrui\controllers\Api.php getshell
- c#枚举enum
- wkwebview 字体大小调整 网页内容高度计算
- DispatcherServlet工作原理探究
- 敌兵布阵 【hdu-1166】【树状数组】
- open-falcon 前端安装笔记及问题。
- Android xUtils3源码解析之注解模块
- Java Effective 总结(0)
- 百度地图显示多个点
- Weird Rounding (Codeforces-779B)
- 为独立服务器安装 Grid Infrastructure