我使用以下代码行来设置按钮的大小:
self.toolsButton.frame.size = CGSizeMake(190, 40)
一切都很好,直到我添加以下布局约束:
var constrainToCenter = NSLayoutConstraint(item: toolsButton, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1.0, constant: 0.0)
self.view.addConstraint(constrainToCenter)
据我所知,这个约束代码将按钮与视图水平居中,但为什么会对帧大小产生影响?如何在保持约束的同时保持框架尺寸?
答案 0 :(得分:0)
您可以添加高度和宽度约束来强制按钮的大小。
如果使用约束,最好是约束完全定义元素的大小和位置。 当您仅为一个属性添加约束时,它可能会与默认系统约束冲突。
编辑 - 更多信息:
如果在代码中创建视图,则view.translatesAutoresizingMaskIntoConstraints属性应默认为YES。
这意味着系统会自动为其添加约束。并且它们可能与您手动添加的约束冲突。
因此,我认为最好的解决方案是设置
view.translatesAutoresizingMaskIntoConstraints = NO
然后手动添加4个约束:
如果您不需要创建任何特定约束,只需将该选项保留为YES,系统将创建约束以强制执行您设置的框架,这通常就足够了。