swift - 使用函数停用 viewdidload 中声明的 nslayoutconstraint

标签 swift function nslayoutconstraint viewdidload

下面的代码在 viewdidload 中声明布局约束。当调用函数 Selena 时,我希望将约束更改为函数 selena 中的内容。当我调用该函数时,对象不会改变。它没有任何作用。我知道我必须以某种方式取消原来的限制。

   override func viewDidLoad() {

    NSLayoutConstraint.activate ([
        i.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :150),
        i.topAnchor.constraint(equalTo: view.centerYAnchor, constant : -200),

        i.widthAnchor.constraint(equalToConstant: 300),
        i.heightAnchor.constraint(equalToConstant: 450),

    ])

}


@objc func selena(){
    NSLayoutConstraint.activate ([
        i.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :50),
        i.topAnchor.constraint(equalTo: view.centerYAnchor, constant : -50),

        i.widthAnchor.constraint(equalToConstant: 20),
        i.heightAnchor.constraint(equalToConstant: 450),

    ])

}

最佳答案

您可以保留对它们的引用,然后使用停用

  var oldCons = [NSLayoutConstraint]()

   override func viewDidLoad() {
       super.viewDidLoad()
     oldCons = [
        i.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :150),
        i.topAnchor.constraint(equalTo: view.centerYAnchor, constant : -200), 
        i.widthAnchor.constraint(equalToConstant: 300),
        i.heightAnchor.constraint(equalToConstant: 450)
     ]
    NSLayoutConstraint.activate(oldCons)

}


@objc func selena(){

    NSLayoutConstraint.deactivate(oldCons)
    NSLayoutConstraint.activate ([
        i.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :50),
        i.topAnchor.constraint(equalTo: view.centerYAnchor, constant : -50), 
        i.widthAnchor.constraint(equalToConstant: 20),
        i.heightAnchor.constraint(equalToConstant: 450) 
    ])


}
<小时/>

高度约束没有改变,你可以从viewDidLoad内的数组中获取它

 i.heightAnchor.constraint(equalToConstant: 450).isActive = true

并将其从 selena 函数中删除

关于swift - 使用函数停用 viewdidload 中声明的 nslayoutconstraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459764/

相关文章:

ios - 如何在保持 1 :1 ratio? 的同时在 UIImageView 上设置最大宽度和高度

javascript - webkit View 内容高度溢出

c++ - 为什么这些函数在 75% 的时间内给出正确的输出?

c - C 中变量和函数的区别?

C++ 函数参数和结构错误

ios - 在显示 View 之前根据特定宽度获取 UIView 的高度

ios - 更改 NSLayoutConstraint 的常量

ios - 在scrollViewDidScroll中调整tableview标题高度时标题和单元格之间出现间隙

swift - 将字符串转换回 PDF

ios - 当 UITableView 放在 tableview 页脚上时,将单元格移动到最后一行