我正在使用约束,到目前为止还可以。
我有一个表格视图,每行我有 3 个标签。 这 3 个标签的内容是动态的,所以我也需要这些标签的宽度是动态的。问题是,如果需要,我希望最右侧的标签缩小,以完整字体大小显示左标签和中间标签的全部内容。
将正确的标签设置为adjustsFontSizeToFitWidth = true
因此,如果需要,字体会缩小,其他标签的字体大小是固定的。这是我到目前为止所拥有的——
MainView.addConstraint(NSLayoutConstraint(item: leftlabel,
attribute: .Left,
relatedBy: .Equal,
toItem: MainView,
attribute: .Left,
multiplier: 1,
constant: 15))
MainView.addConstraint(NSLayoutConstraint(item: midlabel,
attribute: .Left,
relatedBy: .Equal,
toItem: leftlabel,
attribute: .Right,
multiplier: 1,
constant: 15))
MainView.addConstraint(NSLayoutConstraint(item: rightlabel,
attribute: .Left,
relatedBy: .Equal,
toItem: midlabel,
attribute: .Right,
multiplier: 1,
constant: 15))
MainView.addConstraint(NSLayoutConstraint(item: rightlabel,
attribute: .Right,
relatedBy: .Equal,
toItem: MainView,
attribute: .Right,
multiplier: 1,
constant: 15))
实际发生的是,最左边的标签宽度正在缩小,我看不到里面的整个文本,相反,我看到一些文本和几个字母后面的 3 个点。
我想要的另一件事是,即使有"空白"(例如,如果 3 个标签内的文本短于主视图宽度),中间标签也将始终位于左侧标签旁边。
见下图:在前两行中,您可以看到我想要的内容,在最后一行中是发生的情况
通了!
在最左侧的标签上增加宽度解决了这个问题。
因为我从一开始就不知道标签的宽度,所以我用leftlabel.intrinsicContentSize()
来获取宽度,并用这个宽度添加了另一个约束。