2017-07-31 128 views
1

我一直在无休止地寻找这个工作的答案。我正在尝试创建一个非常简单的WKWebView应用程序来封装Web应用程序。因为导航控件都在应用程序中,所以我不需要任何东西。iOS WKWebView状态栏填充

目前我ViewController.swift文件看起来像这样:

https://gist.github.com/andrewweaver/4a0e13245f185e8f31ba812b91f7dddd

斯威夫特版本: Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42)

的问题是状态栏上的填充,我想调整它所以状态栏不在内容的顶部,因为它在这里:

enter image description here

任何帮助将不胜感激,因为我是iOS开发新手。我还希望能够更改状态栏的颜色,但目前这不是一个直接的问题。

回答

3

我解决了使用自动布局限制这个问题,请检查

import UIKit 
import WebKit 

class ViewController: UIViewController, WKUIDelegate { 

     var webView: WKWebView! 


     override func viewDidLoad() { 
      super.viewDidLoad() 


      setupWebView() 

      let url = URL(string: "https://www.google.com") 
      let request = URLRequest(url: url!) 
      webView.load(request) 
    } 

    func setupWebView() { 
      let webConfiguration = WKWebViewConfiguration() 

      webView = WKWebView(frame:.zero , configuration: webConfiguration) 
      webView.uiDelegate = self 
      //view = webView 
      view.addSubview(webView) 
      webView.translatesAutoresizingMaskIntoConstraints = false 

      view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0":webView])) 
      view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-20-[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0":webView])) 
    } 

     override func didReceiveMemoryWarning() { 
       super.didReceiveMemoryWarning() 
       // Dispose of any resources that can be recreated. 
     } 
} 

enter image description here 希望它能帮助。

+0

你是绝对的救命! –

+0

很高兴能提供帮助 – 3stud1ant3

+2

此解决方案在iPhone X上无法使用。您必须将垂直约束设置为顶部布局指南,而不是硬编码从屏幕顶部偏移20像素。 –

5

要完全在HTML/CSS(这将涉及到您控制HTML)完成此操作,您需要将viewport-fit=cover添加到元标记viewport。这告诉设备,您希望webview填充整个屏幕,包括“安全区域”(例如状态栏后面)。

但是,您还需要动态调整填充以处理iPhone X,该X具有更大的状态栏区域,并包含扬声器和相机的凹槽。

幸运的是,苹果公司暴露的安全区域插图一些CSS常量,所以你可以把那些在你的CSS的优势: 即padding-top: constant(safe-area-inset-top);

我写了一些关于这种情况下,新的CSS功能的iOS的11和iPhone X:https://ayogo.com/blog/ios11-viewport/


如果没有有过HTML/CSS控制被加载,那么你可以为你的Web视图禁用安全区行为:

if #available(iOS 11.0, *) { 
    webView.scrollView.contentInsetAdjustmentBehavior = .never; 
} 

请注意,在iPhone X上,这可能会导致内容无法访问并被切入点遮挡。