iOS:如何以编程方式将 View 添加到 Storyboard View

标签 ios objective-c swift cordova

场景:我正在为 iOS 开发混合 Cordova (Phonegap) 应用程序。为了混合原生代码和 Cordova 代码,我在 Xcode 7 中设置了一个 Storyboard,其中 UIView 嵌入到容器 View 中(使用嵌入转场),以便能够在整个原生应用程序中重复使用 Web View 。

对于 Cordova View 的嵌入,我找到了这些说明: 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];

但他们没有解释如何将 View 添加到 Storyboard View 。我特别问自己如何处理 CGRectMake 问题,因为我希望 View 能够响应地呈现,即调整自身以适应父 View 的约束(而不是具有固定的矩形)。

我已经通过派生自 Cordova 的标准应用委托(delegate)来实现了这一点,但这一定是错误的方法。当我调用 Cordova 的相机,拍照并返回我的 WebView 时, WebView 突然跳出它的边界(到窗口的顶部),我在 Xcode 控制台中看到这个错误消息:

Presenting view controllers on detached view controllers is discouraged

PS:我实际上使用的是 Swift,但我能够阅读 Objective-C 代码,所以这些语言中的任何一种的代码示例对我来说都很好。

最佳答案

只需为 Storyboard中存在的 View 创建一个导出,连接它并添加 subview

@IBOutlet weak var containerView: UIView!

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

编辑: 在这里,我在 Playground 上做了一个例子,这样你就可以看到你的 View 的框架是如何随着 parent 的变化而变化的。 Example

关于iOS:如何以编程方式将 View 添加到 Storyboard View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32410465/

相关文章:

ios - 以编程方式将按钮放置在图像上

ios - CMSampleBufferGetImageBuffer(sampleBuffer) 返回 nil

ios - 创建 SystemSoundID 失败 iOS - OSStatus = 0

ios - 应用程序 :didReceiveLocalNotification never called on ios 8

objective-c - 如何通过按下 NSButton 显示键盘?

objective-c - 使用未声明的标识符

objective-c - @package 指令在 Objective-C 中的作用是什么?

ios - 伪造到另一个 View Controller 的导航

ios - 如何在 Swift 3 中将位置从我的应用程序共享到 WhatsApp

ios - iOS Swift 视频拉伸(stretch)问题