在Xcode 7.3中对UILabel应用Autolayout

时间:2017-01-19 07:43:33

标签: ios xcode autolayout uilabel ios-autolayout

我正在尝试学习自动布局,但却陷入了困境。

这是我想要实现的,我有一个自定义的tableView单元格,其中我有一个imageView和3个标签和一个按钮。

enter image description here

我试图改变他们的抗压力优先级和拥抱优先级但失败了。那么有人可以指导我如何做到这一点?

1 个答案:

答案 0 :(得分:0)

如果你的标签固定大小(numberOfLines!= 0),他们会自动显示......如果文字内容不适合。

要构建视图布局,请查看新的(从iOS 9开始)UIStackView,它允许堆叠视图并管理其自动布局。

您需要的一种可能方法是在UIStackView中包含三个标签。然后使用自动布局约束来排列UIStackView,按钮和图像。您的一个约束应该使UIStackView具有一定的固定宽度和/或高度,以便您可以控制标签的大小:

使用视觉语言:H:[myStackView(== 280)]或

theView.addConstraint(NSLayoutConstraint(item: myStackView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.width, multiplier: 1, constant: 280))

以下是以编程方式创建UIStackView的示例代码以及Apple的文档链接: https://developer.apple.com/reference/uikit/uistackview

示例代码有两个水平堆叠,居中且大小相等的标签,相隔40个。您需要垂直堆叠标签。

let stackView = UIStackView(arrangedSubviews: [negativeResponseButton, positiveResponseButton])
stackView.axis = .horizontal
stackView.distribution = .fillEqually
stackView.alignment = .center
stackView.spacing = 40