代码之家  ›  专栏  ›  技术社区  ›  PaFi

以编程方式更新约束?

  •  0
  • PaFi  · 技术社区  · 8 年前

    var exchangesViewActivated = false {
        didSet {
            if exchangesViewActivated == true {
                setExchangesView()
            } else {
                setUpLayout()
            }
        }
    }
    

    DIE SUVIEW和translatesAutoResizingMask设置为约束。

    func setUpLayout() {
    
        bottomContainer.heightAnchor.constraint(equalToConstant: 500).isActive = true
    
    
        bottomContainer.leadingAnchor.constraint(equalTo: scrollViewContrainer.leadingAnchor).isActive = true
        bottomContainer.trailingAnchor.constraint(equalTo: scrollViewContrainer.trailingAnchor).isActive = true
        bottomContainer.topAnchor.constraint(equalTo: configBar.bottomAnchor).isActive = true
        bottomContainer.bottomAnchor.constraint(equalTo: scrollViewContrainer.bottomAnchor).isActive = true
    
    }
    

     func setExchangesView() {
    
    bottomContainer.bottomAnchor.constraint(equalTo: scrollViewContrainer.bottomAnchor).isActive = false
    
            bottomContainer.heightAnchor.constraint(equalToConstant: 500).isActive = false
            bottomContainer.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0).isActive = true
    }
    

    但此约束保持激活状态:

    我错过什么了吗?将约束设置为false是否不足以停用它?我要打电话给其他人吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Bilal hao zou    8 年前

    setUpLayout() 每次调用时都添加新的约束 方法。您必须保存约束引用并在下次更新它。

    // class variable 
    var bottomConstraint:NSLayoutConstraint? = nil
    
    bottomConstraint = bottomContainer.heightAnchor.constraint(equalToConstant: 500)
    bottomConstraint.isActive = true
    

    稍后更新约束

    bottomConstraint.constant = 100
    bottomConstraint.isActive = true
    
        2
  •  1
  •   Shehata Gamal    8 年前

    var heightCon:NSLayoutConstraint!
    var botCon:NSLayoutConstraint!
    

    //

    heightCon = bottomContainer.heightAnchor.constraint(equalToConstant: 500)
    heightCon.isActive = true
    
    botCon = bottomContainer.bottomAnchor.constraint(equalTo: scrollViewContrainer.bottomAnchor)
    botCon.isActive = true