当使用Xcode 7中的AutoLayout时,我对试图在视图中扩展5个子视图感到非常失望。我在一个集合视图控制器的页脚中添加了5个视图,我希望这些视图在显示在不同宽度的设备上时,横向分布均匀。我在上面找到了一些线程,但不幸的是,它们在Xcode 7中都过时了,而且由于我没有"50声誉“而不能发表评论,我唯一的希望就是创建自己的线程。我真的很感激你的帮助,为这件事疯狂了好几个小时。
发布于 2016-04-12 13:45:03
这应该是AutoLayout中非常简单的布局。
首先,您需要确保所有视图都具有相同的宽度。在IB中,您可以选择它们,并使用接口生成器中的“添加约束”按钮,然后点击“等宽”按钮。在代码中,这稍微复杂一些,但同样有可能。
其次,你需要确保每个视图的前缘和后缘是“固定”在一起的。选择第一个视图并(使用“添加约束”按钮)将其固定在超级视图的左侧边缘。然后CTRL-从第一个视图拖动到第二个视图,并选择“水平间隔”。对每对视图重复此操作。
我还建议查看www.raywenderlich.com站点,因为它们是一些非常好的AutoLayout教程。
发布于 2016-04-12 13:38:29
如果您按代码添加:
func constraintsForView(view: UIView, position: Int, superViewWidth: CGFloat) -> [NSLayoutConstraint] {
let views = ["view": view]
let hDistance: CGFloat = (superViewWidth / 5.0) * CGFloat(position)
var constraints = [NSLayoutConstraint]()
let h = "H:|-\(hDistance)-[view]"
let v = "V:|[view]|"
let H_Constraint = NSLayoutConstraint.constraintsWithVisualFormat(h, options: [], metrics: nil, views: views) ?? [NSLayoutConstraint]()
let V_Constraint = NSLayoutConstraint.constraintsWithVisualFormat(v, options: [], metrics: nil, views: views) ?? [NSLayoutConstraint]()
constraints.appendContentsOf(H_Constraint)
constraints.appendContentsOf(V_Constraint)
constraints.append(NSLayoutConstraint(item: view, attribute: .Width, relatedBy: .Equal, toItem: view.superview, attribute: .Width, multiplier: 0.2, constant: 0))
return constraints
}这将根据他们的立场(1-5)适用约束。
如果您使用Interface Builder,然后将第一个视图放置在左侧,然后给它与superview相等的宽度并将乘法器更改为0.2,则将下一个视图附加到第一个视图,再次添加相同的宽度,一直执行到第5个视图,然后将其向上/向下/左/右添加。
发布于 2016-04-12 13:41:25
您可以插入等宽约束。选择子视图和父视图设置等宽约束,然后根据使用IB的要求编辑它的乘法器。或者只是以编程的方式提供约束。
https://stackoverflow.com/questions/36574848
复制相似问题