如何以编程方式为容器视图设置适应性约束

时间:2019-04-10 14:32:01

标签: swift uiview constraints uicontainerview

注意:现在我都有编程设置的约束和情节提要约束。

  1. 问题一:

如果同时保留程序设计和情节提要约束,则会在情节提要中出现错误,但该应用程序可以正常运行(我用编程性的条件替换了一些情节提要约束)。但是我可以吗?苹果会接受吗?

否则

  1. 问题二:

我有一个ViewController,在其中放置了两个容器视图,每个视图具有不同的尺寸,以便创建一种侧面菜单。 我有一个和屏幕一样大的大屏幕,还有一个和屏幕一样长但只有屏幕一半的小屏幕。 最初,我在情节提要中添加了约束,但现在我意识到我需要以编程方式设置它们以实现所需。 我需要从情节提要转换为代码的约束是

大容器375x667:

  • 将空间拖到superView(或使它的右侧适应每台设备的东西,我想superview应该可以正常工作);
  • 宽度和高度等于视图;
  • 通往小型容器视图的空间(0)。

小型集装箱240x667

  • 宽度等于240;
  • 高度等于大容器的高度;

  • 在大容器上移动空间(如果我们已经设置了大容器的前导空间,则无需在此处再次添加空间);

  • 对齐导致安全区域等于-240。

这是我已经做过的(正确的部分):

func containerViewsConstraints() {
 containerView1.translatesAutoresizingMaskIntoConstraints = false

        containerView1.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        containerView1.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true


        containerView2.translatesAutoresizingMaskIntoConstraints = false
        containerView2.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        containerView2.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}

这是我尝试过的方法(不确定是否正确):

containerView2.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
        containerView2.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

    containerView2.widthAnchor.isEqual(view.widthAnchor)
        containerView2.heightAnchor.isEqual(view.heightAnchor)

        containerView1.widthAnchor.constraint(equalToConstant: 240)
        containerView1.heightAnchor.isEqual(view.heightAnchor)

1 个答案:

答案 0 :(得分:0)

您需要

bigView.backgroundColor = .red
smallView.backgroundColor = .green 
bigView.translatesAutoresizingMaskIntoConstraints = false
smallView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bigView)
view.addSubview(smallView)
NSLayoutConstraint.activate([

    bigView.topAnchor.constraint(equalTo: view.topAnchor),
    bigView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
    bigView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    bigView.trailingAnchor.constraint(equalTo: view.trailingAnchor),

    smallView.topAnchor.constraint(equalTo: view.topAnchor),
    smallView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
    smallView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    smallView.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier:0.5)

])