iOS约束样式:addConstraints vs.isActive=true
我有一些以编程方式创建自动布局约束的代码,并将它们添加到视图中 有两种方法可以做到这一点-在superView上调用iOS约束样式:addConstraints vs.isActive=true,ios,swift,autolayout,nslayoutconstraint,Ios,Swift,Autolayout,Nslayoutconstraint,我有一些以编程方式创建自动布局约束的代码,并将它们添加到视图中 有两种方法可以做到这一点-在superView上调用addConstraints,或在每个约束(内部调用addConstraint)上设置.isActive=true 备选案文1: parent.addConstraints([ child.topAnchor.constraint(equalTo: parent.topAnchor, constant: 20), child.leftAnchor.constrain
addConstraints
,或在每个约束(内部调用addConstraint)上设置.isActive=true
备选案文1:
parent.addConstraints([
child.topAnchor.constraint(equalTo: parent.topAnchor, constant: 20),
child.leftAnchor.constraint(equalTo: parent.leftAnchor, constant: 5) ])
备选案文2:
child.topAnchor.constraint(equalTo: parent.topAnchor, constant: 20).isActive = true
child.leftAnchor.constraint(equalTo: parent.leftAnchor, constant: 5).isActive = true
我的问题是,做一件事比做另一件事有什么好处?(性能/等)还是纯粹的风格
(我认为在下一次布局过程之前不会对约束进行评估,因此我认为我们逐个添加约束而不是在块中添加约束并不重要??)
如果只是风格,社区“更喜欢”的风格是什么
(就我个人而言,我更喜欢addConstraints,但是它非常接近,而且我很容易会选择.isActive)根据
addConstraint:
上的文档,建议为单个约束设置active
属性。(注意:active
属性仅适用于iOS 8+)
为iOS 8.0或更高版本开发时,请将约束设置为活动
属性设置为YES,而不是直接调用addConstraint:方法。
活动特性会自动从中添加和删除约束
正确的观点。()
另外,如果查看addConstraint:
的接口定义,它有以下注释:
//此方法将在将来的版本中被弃用,并应
避免。相反,请将NSLayoutConstraint的活动属性设置为“是”
话虽如此,实际上还有第三种(可能更好)选择,那就是使用
NSLayoutConstraint
的类方法activate:
:
NSLayoutConstraint.activate([
child.topAnchor.constraint(equalTo: parent.topAnchor, constant: 20),
child.leftAnchor.constraint(equalTo: parent.leftAnchor, constant: 5) ])
根据文档和接口文件,这也是推荐的解决方案。因此,如果您有多个约束条件,这将是一个简单的解决方案,并且在您的情况下可能更受欢迎
(接口注释;重点):
激活所包含约束中的每个约束的便利方法
数组,与设置active=YES的方式相同这通常更为重要
比单独激活每个约束更有效。
顺便说一句,看起来“activateConstraints”已被重命名为“activate”:感谢您的关注!我更新了它。为了将来,请随意编辑答案:D。再次感谢!