ios – 如何以编程方式添加容器视图

ios – 如何以编程方式添加容器视图,第1张

概述容器视图可以通过界面编辑器轻松添加到故事板中.添加时,容器视图是占位符视图,嵌入段和(子)视图控制器. 但是,我无法找到一种以编程方式添加Container View的方法.其实我甚至不能找到一个名为UIContainerView的类. 容器视图类的名称肯定是一个好的开始.一个完整的指南,包括segue将不胜感激. 我知道View Controller编程指南,但我不认为它与Interface B 容器视图可以通过界面编辑器轻松添加到故事板中.添加时,容器视图是占位符视图,嵌入段和(子)视图控制器.

但是,我无法找到一种以编程方式添加Container VIEw的方法.其实我甚至不能找到一个名为UIContainerVIEw的类.

容器视图类的名称肯定是一个好的开始.一个完整的指南,包括segue将不胜感激.

我知道VIEw Controller编程指南,但我不认为它与Interface Builder对于Container VIEwer的方式相同.例如,当约束被正确设置时,(子)视图将适应容器视图中的大小变化.

解决方法 故事板“容器视图”只是一个标准的UIVIEw对象.没有特殊的“容器视图”类型.实际上,如果您查看视图层次结构,可以看到“容器视图”是标准的UIVIEw:

为了以编程方式实现这一点,您使用“视图控制器控制”:

>通过在storyboard对象上调用instantiateVIEwControllerWithIDentifIEr实例化子视图控制器.
>在父视图控制器中调用addChildVIEwController.
>使用addSubvIEw将视图控制器的视图添加到视图层次结构中(并根据需要设置框架或约束).
>在子视图控制器上调用dIDMovetoParentVIEwController方法,将引用传递给父视图控制器.

请参阅07控制器编程指南中的Implementing a Container View Controller和UIViewController Class Reference的“实现容器视图控制器”部分.

例如,它可能看起来像:

overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    let controller = storyboard!.instantiateVIEwControllerWithIDentifIEr("Second")    addChildVIEwController(controller)    controller.vIEw.translatesautoresizingMaskIntoConstraints = false    vIEw.addSubvIEw(controller.vIEw)    NSLayoutConstraint.activateConstraints([        controller.vIEw.leadingAnchor.constraintEqualToAnchor(vIEw.leadingAnchor,constant: 10),controller.vIEw.trailingAnchor.constraintEqualToAnchor(vIEw.trailingAnchor,constant: -10),controller.vIEw.topAnchor.constraintEqualToAnchor(vIEw.topAnchor,controller.vIEw.bottomAnchor.constraintEqualToAnchor(vIEw.bottomAnchor,constant: -10)    ])    controller.dIDMovetoParentVIEwController(self)}

请注意,上述实际上并没有向层次结构添加“容器视图”.如果你想这样做,你会做一些像:

overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    // add container    let containerVIEw = UIVIEw()    containerVIEw.translatesautoresizingMaskIntoConstraints = false    vIEw.addSubvIEw(containerVIEw)    NSLayoutConstraint.activateConstraints([        containerVIEw.leadingAnchor.constraintEqualToAnchor(vIEw.leadingAnchor,containerVIEw.trailingAnchor.constraintEqualToAnchor(vIEw.trailingAnchor,containerVIEw.topAnchor.constraintEqualToAnchor(vIEw.topAnchor,containerVIEw.bottomAnchor.constraintEqualToAnchor(vIEw.bottomAnchor,])    // add child vIEw controller vIEw to container    let controller = storyboard!.instantiateVIEwControllerWithIDentifIEr("Second")    addChildVIEwController(controller)    controller.vIEw.translatesautoresizingMaskIntoConstraints = false    containerVIEw.addSubvIEw(controller.vIEw)    NSLayoutConstraint.activateConstraints([        controller.vIEw.leadingAnchor.constraintEqualToAnchor(containerVIEw.leadingAnchor),controller.vIEw.trailingAnchor.constraintEqualToAnchor(containerVIEw.trailingAnchor),controller.vIEw.topAnchor.constraintEqualToAnchor(containerVIEw.topAnchor),controller.vIEw.bottomAnchor.constraintEqualToAnchor(containerVIEw.bottomAnchor)    ])    controller.dIDMovetoParentVIEwController(self)}

后一种模式非常有用,如果在不同子视图控制器之间进行转换,并且您只想确保一个孩子的视图位于同一位置,并且之前的子视图(即所有唯一的位置约束都由容器视图指定,而不是每次都需要重建这些约束).但是,如果只是执行简单的视图控制,则对这个单独的容器视图的需求不那么引人注目.

总结

以上是内存溢出为你收集整理的ios – 如何以编程方式添加容器视图全部内容,希望文章能够帮你解决ios – 如何以编程方式添加容器视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存