将自定义视图动态添加到 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 中的每个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT