为什么不使用Autolayout,这也会让你支持设备的方向改变。
var lastLabel:UILabel?
for i in 0..<10servicesLength
{
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints=false
label.lineBreakMode = .ByWordWrapping
label.numberOfLines = 10
label.font = UIFont(name: label.font.fontName, size: 25)
label.text = servicesList[i]
servicesScroll.addSubview(label)
let metrics=["horizontalMargin":21,"top":0,"bottom":0,"separationBetweenLabels":0,"labelMinHeight":25]
let views=["label":label]
servicesScroll.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-horizontalMargin-[label]-horizontalMargin-|",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: metrics,
views: views))
if i == 0{
servicesScroll.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-top-[label]",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: metrics,
views: views))
}
if let lastLabel=lastLabel{
views["lastLabel"]=lastLabel
servicesScroll.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[lastLabel]-separationBetweenLabels-[label]",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: metrics,
views: views))
}
if i == (servicesLength-1){
servicesScroll.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[label]-bottom-|",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: metrics,
views: views))
}
//Optional a minimum height of 25
servicesScroll.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[label(>=labelMinHeight)]",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: metrics,
views: views))
lastLabel=label
}
的重要组成部分,是你设定每个标签作为你会允许标签增长的最大尺寸的numberOfLines。
而且我添加了一个约束的miminum高度:
//Optional a minimum height of 25
servicesScroll.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[label(25)]",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: metrics,
views: views))
这将保证该标签将至少为25的高度和最大的10线在这个例子。
所以我有它的工作,除了它似乎通过调整标签的高度抛出的东西。它将所有标签按照与更改高度相同的量向下推。这会在顶部产生大量的空白区域,并且一些标签会越过滚动视图的底部。我能做些什么来解决这个问题? – user1715916