创建自动布局约束(代码方式)

两种主要的自动布局约束创建方式(代码创建):

  1. addConstraints()

    	scrollView.addSubview(statusButton)
        scrollView.addConstraints([
            statusButton.topAnchor.constraint(equalTo: scrollView.topAnchor, constant:12),
            statusButton.leftAnchor.constraint(equalTo: scrollView.leftAnchor, constant:16),
            statusButton.heightAnchor.constraint(equalToConstant: 36),
            ])
        
        scrollView.addSubview(dateRangeButton)
        scrollView.addConstraints([
            dateRangeButton.topAnchor.constraint(equalTo: scrollView.topAnchor, constant:12),
            dateRangeButton.leftAnchor.constraint(equalTo: statusButton.rightAnchor, constant:4),
            dateRangeButton.heightAnchor.constraint(equalToConstant: 36),
            ])
        
        scrollView.addSubview(transactionTypeButton)
        scrollView.addConstraints([
            transactionTypeButton.topAnchor.constraint(equalTo: scrollView.topAnchor, constant:12),
            transactionTypeButton.leftAnchor.constraint(equalTo: dateRangeButton.rightAnchor, constant:4),
            transactionTypeButton.heightAnchor.constraint(equalToConstant: 36),
            ])
    
  2. activate()
    这实际上等价于 addConstraints(),NSLayoutConstraint.activate() 方法可以一次性创建所有约束,也可以调用多次,分批次创建约束,比如这样:

        stockNameLabel = UILabel()
        stockNameLabel.translatesAutoresizingMaskIntoConstraints = false
        addSubview(stockNameLabel)
        NSLayoutConstraint.activate([
            stockNameLabel.topAnchor.constraint(equalTo: topAnchor, constant: 24),
            stockNameLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 16),
            ])
        stockCodeLabel = UILabel()
        stockCodeLabel.translatesAutoresizingMaskIntoConstraints = false
        addSubview(stockCodeLabel)
        NSLayoutConstraint.activate([
            stockCodeLabel.topAnchor.constraint(equalTo: stockNameLabel.bottomAnchor, constant: 8),
            stockCodeLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 16),
            ])
        
    
  3. 修改约束

    首先创建一个约束并保持该约束的引用:

    // 创建约束,同时保持一个引用
    separatorViewTop = separatorView.topAnchor.constraint(equalTo:view.topAnchor, constant: investmentAccountSection.intrinsicHeight)
    // 添加约束
    NSLayoutConstraint.activate([
           ...
            // Separator view
            separatorView.heightAnchor.constraint(equalToConstant: 1),
    		separatorViewTop!,
            separatorView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            separatorView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            ...
    ])
    

    修改约束并立即调用 updateConstraintsIfNeeded():

     self.separatorViewTop?.constant = self.investmentAccountSection.intrinsicHeight
     self.view.updateConstraintsIfNeeded()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值