WKWebView 适配字体

由于苹果强制要求使用WKWebView,在更换过程中就遇到一些问题,比如,在之前UIWebview好好的,转移到wk后显示就不正常,加载html字体过小,这是因为uiwebview有自动适配功能。

为了适配wk上显示的html字体,操作如下:

  • 让网页端开发适配html,
    让他们添加头部

"

"

  • 针对直接加载html的

    也就是使用如下方法加载的

- (nullable WKNavigation *)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;

可以在html前面加个头部,以达到适配的目的

具体代码如下:

#define HEAD @"
" NSString *headerString = HEAD; [web loadHTMLString:[headerString stringByAppendingFormat:@"%@",HTML] baseURL:nil];
  • 使用url加载的,这种情况应该是最多的,因为最近大陆的app都需要提示隐私协议等,而隐私协议最好的方式也就是用html格式

适配代码稍微麻烦一点,具体如下:

  //适配脚本语言
   NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
    
    //创建WKUserScript自定义脚本
    WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
    
    //创建WKUserContentController
    WKUserContentController *wkUController = [[WKUserContentController alloc] init];
    
    //给WKUserContentController上添加自定义脚本
    [wkUController addUserScript:wkUScript];
    
    //创建WKWebViewConfiguration配置
    WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
    
    //给webview设置内容控制器The user content controller to associate with the web view.
    wkWebConfig.userContentController = wkUController;
    
    //用配置的s初始化方式创建webview
    WKWebView *web = [[WKWebView alloc]initWithFrame:[UIScreen mainScreen].bounds configuration:wkWebConfig];
  
    //加载url
    [web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:URL]]];

你可能感兴趣的:(WKWebView 适配字体)