WKWebView 随笔

90 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1.计算webView的内容高度

``

- (void)viewDidLoad {    
    [self.webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];//要想好代码的时机,要在webView初始化后
}

- (void)dealloc {
    [self.webView.scrollView removeObserver:self forKeyPath:@"contentSize" context:nil];
}

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context
{
    if (object == self.webView.scrollView && [keyPath isEqual:@"contentSize"]) {
        // we are here because the contentSize of the WebView's scrollview changed.

        UIScrollView *scrollView = self.webView.scrollView;
        NSLog(@"New contentSize: %f x %f", scrollView.contentSize.width, scrollView.contentSize.height);
        self.webView.height = scrollView.contentSize.height;  //自适应高度
 }
}

\

2.通过JS修改iOS客户端

 2.1 .h

``

#import <WebKit/WebKit.h>

@interface ContenWebView : WKWebView
@property (nonatomic,copy) void(^finishedHandler)();

@end


2.2 .m

``

#import "ContenWebView.h"

@interface ContenWebView ()<WKNavigationDelegate>

@end
@implementation ContenWebView

-(instancetype)initWithFrame:(CGRect)frame{
    if (self == [super initWithFrame:frame]) {
       
 
        self.scrollView.scrollEnabled = false;
        self.navigationDelegate = self;
        
    }
    return self;
}

// 页面开始加载时调用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
    [SVProgressHUD show];
}
// 当内容开始返回时调用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{
    
}
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    [SVProgressHUD dismiss];
    //修改字体大小 300%
    [ webView evaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '250%'" completionHandler:nil];
    
    //修改字体颜色  #9098b8
//    [ webView evaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= '#9098b8'" completionHandler:nil];
   
    
        if (self.finishedHandler) {
        self.finishedHandler();
    }
}
// 页面加载失败时调用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation{
    NSLog(@"webView炸了");
}

@end