在iOS中调整Cordova WebView的大小

时间:2016-05-26 18:40:55

标签: javascript ios swift cordova webview

在尝试构建Native Hybrid应用程序时,我在调整Cordova(4.0.1)webview框架时遇到了问题。我对iOS开发相对较新,对Cordova / PhoneGap来说还是新手。

我已遵循此页面上的所有说明http://docs.phonegap.com/develop/1-embed-webview/ios/,使用CocoaPods方法和样本电话差距项目。我搜索并尝试了其他语法不同的方法,但基本相同。

我创建了一个自定义视图控制器类“GolfViewController”,它扩展了Cordova提供的CDVViewController类。 GolfViewController.swift的代码如下:

import UIKit

class GolfViewController: CDVViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
  }

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

  override func viewWillAppear(animated: Bool) {
    self.view.backgroundColor = UIColor.blueColor()
    self.webView.frame = CGRectMake(self.view.bounds.origin.x,
                                self.view.bounds.origin.y + 50,
                                self.view.bounds.size.width,
                                self.view.bounds.size.height - 100)
    super.viewWillAppear(animated);
 }
}

webview中的内容应加载屏幕顶部和底部的一些空格。它实际上做了,一瞬间,然后在cordova javascript中的某些东西迫使webview全屏显示。如果我在cordova-plugins.js中注释掉wkwebview cordova插件,webview会正确地渲染顶部和底部的空格,但当然没有一个控件可以工作。

任何帮助都会受到高度赞赏,因为我尝试过的所有记录方法都失败了。

*************已解决*************

有一个名为“cordova-plugin-statusbar”的cordova插件,在初始化时会调整webview框架的大小以全屏显示。只有当你有

时才会发生这种情况
   <preference name="StatusBarOverlaysWebView" value="true" /> 

在webview的config.xml中定义。

它并不像您在文档中所期望的那样简单地“覆盖状态栏”。将此参数设置为true实际上会完全调整webview的大小以全屏显示,并覆盖在此事件触发之前您可能已定义的任何其他自定义大小。

如果您要么删除插件(无论如何都不是原生混合应用程序)或者您禁用“StatusBarOverlaysWebView”首选项,那么状态栏插件将不会调整您的webview大小,并且您在“viewWillAppear”中定义的大小将受到尊重而不是被覆盖。这应该在嵌入Web视图的官方手机间隙文档中更新。

0 个答案:

没有答案