HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何以编程方式添加容器视图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
容器视图可以通过界面编辑器轻松添加到故事板中.添加时,容器视图是占位符视图,嵌入段和(子)视图控制器.

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

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

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

解决方法

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

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

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

请参阅07控制器编程指南中的Implementing a Container View ControllerUIViewController 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 – 如何以编程方式添加容器视图所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。