iOS:如何以编程方式将视图添加到情节提要视图

时间:2015-09-05 07:06:26

标签: ios objective-c swift cordova

场景:我正在开发适用于iOS的混合Cordova(Phonegap)应用程序。为了混合原生代码和Cordova代码,我在Xcode 7中设置了一个故事板,其中UIView嵌入在容器视图中(使用嵌入segue),以便能够在整个原生应用程序中重用Web视图。

为了嵌入Cordova视图,我找到了以下说明: http://cordova.apache.org/docs/en/edge/guide_platforms_ios_webview.md.html#iOS%20WebViews

基本上说你必须称之为:

CDVViewController* viewController = [CDVViewController new];
viewController.view.frame = CGRectMake(0, 0, 320, 480);
[myView addSubview:viewController.view];

但他们没有解释如何将视图添加到故事板视图。我特别问自己如何处理CGRectMake的事情,因为我希望视图呈现响应性,即将自身调整为父视图的约束(而不是固定的矩形)。

我已经通过从Cordova的标准应用程序委托派生来实现这一点,但这一定是错误的方法。当我打电话给科尔多瓦的相机,拍照并回到我的网页视图时,网页视图突然跳出它的边框(到窗口的顶部),我看到这个错误信息在Xcode控制台:

Presenting view controllers on detached view controllers is discouraged

PS:我实际上是在使用Swift,但我能够阅读Objective-C代码,因此任何一种语言的代码示例都适合我。

1 个答案:

答案 0 :(得分:2)

只需为故事板中存在的视图创建一个插座,连接它并添加子视图

@IBOutlet weak var containerView: UIView!

func addMySubview() {
 var viewController = CDVViewController()
 viewController.view.frame = containerView.frame
 containerView.addSubview(viewController.view)
}

编辑: 在这里,我在操场上做了一个例子,这样你就可以看到你的视图框架如何随父母变化。 Example