iOS-获取WKWebView内容的高度并设置字体大小

栏目: IOS · 发布时间: 6年前

内容简介:在大多是情况下,如果一个界面完全是由网页组成的时候我们也许不需要考虑获取wkwebview的高度,但是如果说界面比较的复杂,当webview在一个scrollView上的时候,我们可能就需要动态的获取webview的高度实现scrollView中contectSize的滑动。可以发现当webview的y值不是在红色背景的scroolView顶部的时候,下面会被遮盖住。所以这时候我们需要动态的获取页面的高度然后赋值给scrollView的contentSize的高度上去。代码如下:

在大多是情况下,如果一个界面完全是由网页组成的时候我们也许不需要考虑获取wkwebview的高度,但是如果说界面比较的复杂,当webview在一个scrollView上的时候,我们可能就需要动态的获取webview的高度实现scrollView中contectSize的滑动。

iOS-获取WKWebView内容的高度并设置字体大小

可以发现当webview的y值不是在红色背景的scroolView顶部的时候,下面会被遮盖住。所以这时候我们需要动态的获取页面的高度然后赋值给scrollView的contentSize的高度上去。

代码如下:

#pragma mark - WKNavigationDelegate
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{    
    //获取网页的高度
    [webView evaluateJavaScript:@"document.body.scrollHeight"completionHandler:^(id _Nullable result,NSError * _Nullable error){        
    self.wbContentHeight = [result floatValue];        
    self.detailIntroduceWebView.height = self.wbContentHeight ;        
    self.mainScrollView.contentSize = CGSizeMake(kScreenWidth, 
    self.detailIntroduceWebView.maxY + 49) ;
    }];
}

说明:我们通过:

/* @abstract Evaluates the given JavaScript string.

@param javaScriptString The JavaScript string to evaluate.

@param completionHandler A block to invoke when script evaluation completes or fails.

@discussion The completionHandler is passed the result of the script evaluation or an error.

*/

-(void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler;”

方法来实现OC与JS的交互获取到了网页的高度。然后改变scrollView的滑动范围:self.mainScrollView.contentSize = CGSizeMake(kScreenWidth,,self.detailIntroduceWebView.maxY + 49) ;

这样实现高度的适应。这里得注意,应该要取消网页的滑动效果。不然会出现手势的冲突。

改变网页字体大小和字体颜色的方法:

// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{    
    //修改字体大小(方法一)
    NSString *fontSize = [NSString stringWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",125];
    [ webView evaluateJavaScript:fontSize completionHandler:nil];    
    //修改字体颜色
    NSString *colorString = [NSString stringWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= '#364857'"];
    [webView evaluateJavaScript:colorString completionHandler:nil];
}

修改字体大小的方法二:通过 preference.minimumFontSize 来设置

代码如下:

    //js脚本
    NSString *jScript = @"var meta = document.createElement('meta'); 
    meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); 
    document.getElementsByTagName('head')[0].appendChild(meta);";    
    //注入
    WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];    
    WKUserContentController *wkUController = [[WKUserContentController alloc] init];
    [wkUController addUserScript:wkUScript];    
    //配置对象
    WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
    wkWebConfig.userContentController = wkUController;    
    // 创建设置对象
    WKPreferences *preference = [[WKPreferences alloc]init];    
    // 设置字体大小(最小的字体大小)
    preference.minimumFontSize = 28 ;    
    // 设置偏好设置对象
    wkWebConfig.preferences = preference;    
    //WKWebViewConfiguration *config = [WKWebViewConfiguration new];
    self.detailIntroduceWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, self.supplierView.maxY, kScreenWidth, kScreenHeight - self.supplierView.maxY) configuration:wkWebConfig];    
    self.detailIntroduceWebView.scrollView.bounces = NO ;    
    //self.detailIntroduceWebView.scrollView.scrollEnabled = NO ;
    self.detailIntroduceWebView.navigationDelegate = self ;    
    self.detailIntroduceWebView.UIDelegate = self ;    
    self.detailIntroduceWebView.multipleTouchEnabled = YES;
    
    
    

[self.mainScrollView addSubview:self.detailIntroduceWebView]

;

到这里就结束了。记录学习和工作中的点滴,让不明白的地方越来越少。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25366.html

iOS-获取WKWebView内容的高度并设置字体大小

iOS-获取WKWebView内容的高度并设置字体大小 微信打赏

iOS-获取WKWebView内容的高度并设置字体大小 支付宝打赏

感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

乌合之众

乌合之众

(法)勒庞 / 冯克利 / 中央编译出版社 / 2011-5-1 / 16.00元

古斯塔夫・勒庞 Gustave Le Bon(1841-1931) 法国著名社会心理学家。他自1894年始,写下一系列社会心理学著作,以本书最为著名;在社会心理学领域已有的著作中,最有影响的,也是这本并不很厚的《乌合之众》。古斯塔夫・勒庞在他在书中极为精致地描述了集体心态,对人们理解集体行为的作用以及对社会心理学的思考发挥了巨大影响。《乌合之众--大众心理研究》在西方已印至第29版,其观点新颖,语......一起来看看 《乌合之众》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具