Почему бы не использовать 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 каждой метки как максимальный размер, который позволит ярлыку расти.
Также я добавить ограничение на высоту нагрузки минимума:
//Optional a minimum height of 25
servicesScroll.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[label(25)]",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: metrics,
views: views))
Это будет гарантировать, что этикетка будет по меньшей мере 25 и высота не более 10 строк в этом примере.
Таким образом, у меня есть работа, за исключением того, что, похоже, это отбрасывает вещи, регулируя высоту метки. Он нажимает все ярлыки на ту же величину, что и я, меняю высоту на. Это вызывает много белого пространства наверху, а некоторые ярлыки - в нижней части прокрутки. Что я могу сделать, чтобы исправить это? – user1715916