首页 > 解决方案 > 如何以编程方式在父容器中制作两个相同大小的 UIView

问题描述

如何通过以编程方式设置约束使两个 uiview 大小相同而不管屏幕大小?

我知道如何在情节提要上进行限制,但我正在努力学习以编程方式进行。

下面是我的故事板约束的一个例子

在此处输入图像描述

这是我在 viewwilllayoutsubview() 中的尝试

    view.addSubview(topView)
    view.addSubview(bottomView)

    topView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    topView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    topView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    topView.heightAnchor.constraint(equalToConstant: view.frame.size.height / 2).isActive = true

    bottomView.topAnchor.constraint(equalTo: topView.bottomAnchor).isActive = true
    bottomView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    bottomView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    bottomView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

标签: iosswiftautolayout

解决方案


您的代码应该可以正常工作,但是您需要将其放入viewDidLoad其中,并为每个视图translatesAutoresizingMaskIntoConstraints设置为false

topView.translatesAutoresizingMaskIntoConstraints = false
bottomView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([

     topView.topAnchor.constraint(equalTo: view.topAnchor) ,
     topView.leadingAnchor.constraint(equalTo: view.leadingAnchor) ,
     topView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
     topView.heightAnchor.constraint(equalToConstant: view.frame.size.height / 2),

     bottomView.topAnchor.constraint(equalTo: topView.bottomAnchor),
     bottomView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
     bottomView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
     bottomView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])

你也可以替换这个

topView.heightAnchor.constraint(equalToConstant: view.frame.size.height / 2)

topView.heightAnchor.constraint(equalTo: bottomView.heightAnchor)

推荐阅读