但是,我无法找到一种以编程方式添加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 – 如何以编程方式添加容器视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)