将自定义视图动态添加到 iOS 中的每个视图控制器

Posted

技术标签:

【中文标题】将自定义视图动态添加到 iOS 中的每个视图控制器【英文标题】:Dynamically add custom view to every view controller in iOS 【发布时间】:2015-09-22 14:45:51 【问题描述】:

是否可以动态添加(例如通过扩展视图控制器)具有特定尺寸的自定义视图,例如每个视图控制器底部的 50 像素高度?

我正在使用 ios8、自动布局和故事板,我不想修改故事板中的每个视图以将我的视图添加到底部。

我正在尝试以这种方式添加:

let view = CustomView(frame:CGRectMake(0, 0, self.view.frame.width, 50));
self.view.addSubview(view)

但是视图放置在当前控制器视图上,我需要能够放置在控制器视图下,例如广告横幅或标签栏。

【问题讨论】:

如果你必须这样做,为什么不直接使用 UIViewController 子类将这个视图放在底部,然后你的所有 ViewController 都可以是这个自定义 ViewController 的子类而不是通常的 UIViewController。 我只是在寻找将它添加到我的视图控制器的最简单方法,你能给我一些你的想法的例子吗? 这可能是最简单的方法。我的建议不清楚吗?您是否尝试过编写子类?看看layoutSubviews 方法以及insertSubview(_ view: UIView, atIndex index: Int) 【参考方案1】:

假设您希望所有视图控制器都使用 相同 视图,我想我会更改我的根视图控制器。

我的新根视图控制器将有一个容器视图来托管您的旧根视图控制器,以及底部 50 像素高的视图。

既然您使用的是故事板,这应该不难——我认为您可以在很大程度上做到这一点,而无需编写任何代码。拖出一个新的视图控制器。添加容器视图和底部视图。设置约束。将 segue 连接器从容器视图拖到旧的根视图控制器,并将它们的类型设置为“嵌入”。将记分牌的入口点设置为新的控制器。

这是一张图片。

【讨论】:

以上是关于将自定义视图动态添加到 iOS 中的每个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 将自定义 UIView 放在视图控制器中

将自定义视图控制器添加到情节提要

如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT

如何在所有视图控制器中将自定义 uibarbuttonItem 添加到我的导航项?

如何将自定义视图添加到 iOS VoiceOver 转子?

ios如何将自定义控制器重定向obj-c代码放在自定义视图中