首页 > 解决方案 > forEach 自动布局约束未出现

问题描述

我的 swifts 代码使用 for 循环显示到图像视图。现在代码构建,但没有出现。我知道我必须将第二个框的领先锚约束移动到 0.25 上。但我认为第一个盒子是 box1 会出现,但什么也没有出现,我不知道为什么。

import UIKit

class ViewController: UIViewController {
    var box1 = UIButton();var box2 = UIButton()
    override func viewDidLoad() {
        super.viewDidLoad()
        [box1,box2].forEach{
            view.addSubview($0)
            $0.backgroundColor = .red
            $0.translatesAutoresizingMaskIntoConstraints = false
            
            
            $0.heightAnchor.constraint(equalTo: $0.heightAnchor, multiplier: 30).isActive = true
            
            $0.widthAnchor.constraint(equalTo: $0.widthAnchor, multiplier: 30).isActive = true
            $0.leadingAnchor.constraint(equalTo: $0.leadingAnchor ).isActive = true
            $0.topAnchor.constraint(equalTo: $0.topAnchor).isActive = true

        }
    }
    
    
}

照片

标签: swiftfor-loopforeachautolayout

解决方案


我不知道您要在视图中放置按钮的位置,因为您没有将任何视图引用到要对齐的按钮。试试下面的代码,让我知道它是否适合你。

        $0.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 15).isActive = true
        $0.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 15).isActive = true

        $0.heightAnchor.constraint(equalToConstant: 30).isActive = true
        $0.widthAnchor.constraint(equalToConstant: 30).isActive = true

请注意,您尝试使用“ multiplier ”而不是“ equalToConstant ”来设置高度。是的,您可以使用乘数,但前提是您想根据父视图或任何其他视图缩放图像,但在这种情况下,您需要将其设置为常量,因为您为其提供了一个浮点值。


推荐阅读