Где находится метод - (void) populateLabels
?Если он находится в контроллере вида, у вас должен быть легкий доступ к виду, размер которого нужно изменить.Или же, если метки (которые уже созданы) были добавлены в представление, размер которого необходимо изменить, вы можете получить доступ к их суперпредставлению.У вас уже есть нужный размер, просто установите в конце метода размер кадра суперпредставления.
Если вы сначала пытаетесь найти размер каждой метки на основе содержимого строки, вы 'Я хочу использовать метод NSString: -sizeWithFont.Существует несколько вариантов этого, которые позволяют указывать ограничения:
Вычисление метрик для отдельной строки текста - sizeWithFont: - sizeWithFont: forWidth: lineBreakMode: - sizeWithFont: minFontSize: actualFontSize: forWidth: lineBreakMode: вычисление метрикдля нескольких строк текста - sizeWithFont: constrainedToSize: - sizeWithFont: constrainedToSize: lineBreakMode:
Помните, что в UILables отображается только 1 строка текста.Также имейте в виду, что это вернет размер, который займет строка.Представления типа UILabels и UITextView имеют тенденцию добавлять отступы, поэтому вам может потребоваться учитывать это при расчете высоты.После того, как вы вычислили высоту и поместили каждую метку, вы должны знать размер, который должен иметь superView, и установить его соответствующим образом.Кроме того, если вы не знаете, какая метка будет последней / самой низкой / самой дальней в представлении (размер superView должен быть origin.y + size.height последнего представления), вы можете сделать что-то вроде этого:
CGFloat totalHeight = 0.0f;
for (UIView *view in superView.subviews)
if (totalHeight < view.frame.origin.y + view.frame.size.height) totalHeight = view.frame.origin.y + view.frame.size.height;
Это даст вам высоту суперпредставления, если вы еще этого не знаете (и вы можете сделать то же самое для ширины, если это необходимо).