限制搞乱帧大小

时间:2014-08-12 18:50:51

标签: ios layout swift ios8

我使用以下代码行来设置按钮的大小:

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)

据我所知,这个约束代码将按钮与视图水平居中,但为什么会对帧大小产生影响?如何在保持约束的同时保持框架尺寸?

1 个答案:

答案 0 :(得分:0)

您可以添加高度和宽度约束来强制按钮的大小。

如果使用约束,最好是约束完全定义元素的大小和位置。 当您仅为一个属性添加约束时,它可能会与默认系统约束冲突。


编辑 - 更多信息:

如果在代码中创建视图,则view.translatesAutoresizingMaskIntoConstraints属性应默认为YES。

这意味着系统会自动为其添加约束。并且它们可能与您手动添加的约束冲突。

因此,我认为最好的解决方案是设置

view.translatesAutoresizingMaskIntoConstraints = NO

然后手动添加4个约束:

  • 横向位置
  • 垂直位置
  • 高度
  • 宽度

如果您不需要创建任何特定约束,只需将该选项保留为YES,系统将创建约束以强制执行您设置的框架,这通常就足够了。