iOS webView 没有使用整个屏幕

Posted

技术标签:

【中文标题】iOS webView 没有使用整个屏幕【英文标题】:iOS webView is not using whole screen 【发布时间】:2019-07-18 06:53:12 【问题描述】:

我尝试在 webView 应用程序中显示一个完整的响应式引导网站。该应用程序应该只加载我的网站,就像我在智能手机/平板电脑的浏览器中加载网站一样。

但是,该应用在平板电脑上看起来像这样:

如何让应用完全响应?

完整代码:

ViewController.swift

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate 

    @IBOutlet var webView: WKWebView!

    override func viewDidLoad() 
        super.viewDidLoad()
        // 1  The webView loads the url using an URLRequest object.
        let url = URL(string: "https://www.blizz-z.de/")!

        webView.load(URLRequest(url: url))

        // 2  A refresh item is added to the toolbar which will refresh the current webpage.
        let refresh = UIBarButtonItem(
            barButtonSystemItem: .refresh,
            target: webView,
            action: #selector(webView.reload)
        )

        toolbarItems = [refresh]
        navigationController?.isToolbarHidden = true
        navigationController?.isNavigationBarHidden = true

    

    override func loadView() 
        webView = WKWebView()
        webView.navigationDelegate = self
        view = webView
        let color = UIColor.black;
        self.view.backgroundColor = color
    

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 
        title = webView.title
    




【问题讨论】:

我相信这里呈现的视图是 iPhone 应用程序的视图。你确定应用程序支持 iPAD(这是 iPAD 还是通用应用程序) 我需要该应用程序成为 iPad 和 iPhone 的通用应用程序 好的,那么您使用的是 size classes 对吗? 我不明白。我只是在加载一个网站。 你在用故事板吗? 【参考方案1】:

您的代码没有问题。 切换到 Xcode 中的目标设置,在“部署目标”部分的“常规”选项卡上,将“设备”切换为“通用”。 如果您没有添加它,还要添加“Launch Screen.storyboard”。

【讨论】:

谢谢!就是这样。【参考方案2】:

应该为webView添加约束,superView的top/bottom/left/right约束常量为0,非安全区

【讨论】:

我很困惑,我在哪里可以找到这个菜单?请提供更多详细信息。 看截图的右下角,你可以看到一个带箭头的按钮。这意味着应用程序以兼容模式启动。 iPad 将应用程序呈现在与 iPhone 屏幕大小相同的区域中(UIScreen.mainScreen.bounds 与 iPhone 上的相同)。【参考方案3】:
import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate 

 @IBOutlet var webView: WKWebView!

 override func viewDidLoad() 
    super.viewDidLoad()
    self.setupWebview()
    let refresh = UIBarButtonItem(
        barButtonSystemItem: .refresh,
        target: webView,
        action: #selector(webView.reload)
    )

    toolbarItems = [refresh]
    navigationController?.isToolbarHidden = true
    navigationController?.isNavigationBarHidden = true

 


 func setupWebview()
    self.webView.frame = UIScreen.main.bounds
    self.webView.navigationDelegate = self
    self.view.backgroundColor = UIColor.black
    let url = URL(string: "https://www.blizz-z.de/")!
    self.webView.load(URLRequest(url: url))
 


 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 
     title = webView.title
 

试试这个...(注意:不是复制粘贴的代码)

【讨论】:

以上是关于iOS webView 没有使用整个屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react-native-webview 中启用安全上下文?

javascript 提供用于从React-Native WebView发送和接收消息的示例实现(使用postMessage / onMessage WebVie)

Xamarin。 WebView Progres

为啥我的全屏 webview 在打开后会立即关闭?

Android 如何让图片自适应WebView大小

IOS webview全屏