2016-09-02 1 views
0

Я работаю со старым проектом Objective-C, у которого нет раскадровки. Мне нужен UITableView, чтобы отобразить результат с помощью UITableViewCell, который содержит 3 ярлыка. Задача состоит в том, чтобы выровнять 3 метки вертикально в UITableviewCellObjective C setup auto height height в коде

Вот мой Ярлык инициация:

serviceTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 10, 200, LONG_MAX)]; 
[serviceTitleLabel setFont:[UIFont SingPostRegularFontOfSize:16.0f fontKey:kSingPostFontOpenSans]]; 
[serviceTitleLabel setNumberOfLines:0]; 
[serviceTitleLabel setTextColor:RGB(51, 51, 51)]; 
[serviceTitleLabel setBackgroundColor:[UIColor clearColor]]; 
[serviceTitleLabel setTextAlignment:NSTextAlignmentLeft]; 
[contentView addSubview:serviceTitleLabel]; 

statusLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 30, 200, 30)]; 
[statusLabel setFont:[UIFont SingPostBoldFontOfSize:12.0f fontKey:kSingPostFontOpenSans]]; 
[statusLabel setTextColor:RGB(125, 136, 149)]; 
[statusLabel setBackgroundColor:[UIColor clearColor]]; 
[contentView addSubview:statusLabel]; 

costLabel = [[UILabel alloc] initWithFrame:CGRectMake(216, 20, 85, 30)]; 
costLabel.right = contentView.right - 15; 
[costLabel setFont:[UIFont SingPostBoldFontOfSize:16.0f fontKey:kSingPostFontOpenSans]]; 
[costLabel setTextColor:RGB(51, 51, 51)]; 
[costLabel setTextAlignment:NSTextAlignmentRight]; 
[costLabel setBackgroundColor:[UIColor clearColor]]; 
[contentView addSubview:costLabel]; 

Как мы можем настроить в UITableViewController так, что размер будет изменять размеры в зависимости от размера этикетки? Нужно настроить как в ячейке, так и в таблице? Буду признателен за любую оказанную помощь. Благодарю.

Это сейчас экран. Не смотрите прямо

enter image description here

+0

это не ясно для меня, если у вас есть только один Tableview с одной ячейкой или более чем одной ячейки – ddb

+0

Привет это динамический TableView с данных из массива элементов (3 метки - атрибут элемента) –

+0

, что мне нужно понять, если каждая ячейка должна иметь свою пользовательскую высоту или вычисленная высота действительна для каждой ячейки. – ddb

ответ

2

Вы должны использовать UITableViewAutomaticDimension управлять высоту ячейки в соответствии с содержанием. Для этого вам нужно установить ограничение ваших меток со всех сторон, то есть нажать на PIN-код, а затем снять флажок Constraint from margin, и для обеих ваших меток добавить ограничения сверху, снизу, слева и справа. Как требуется если вы хотите использовать UITableViewAutomaticDimension.

Сейчас в ViewController в viewDidLoad методе добавить две строки

self.tableView.estimatedRowHeight = 44.0; 
self.tableView.rowHeight = UITableViewAutomaticDimension; 
+0

Спасибо, мой вопрос: у меня нет раскадровки. все нужно делать в коде –

1

Решение зависит от вашей цели развертывания IOS. Если он выше или равен iOS 8, чем:

self.tableView.rowHeight = UITableViewAutomaticDimension; 

Это решение работает, если ограничения в ячейке установлены правильно.

Если это меньше, чем вам нужно вычислить его самостоятельно, осуществлять UITableViewDelegate

- tableView:heightForRowAtIndexPath: 
+0

Привет, спасибо за вашу помощь, где я могу поставить строку self.tableView.rowHeight = UITableViewAutomaticDimension ;? так или иначе, чтобы установить ограничение для ячейки. только есть 3 метки в ячейке –

+0

Установите его self.tableView.rowHeight в вашем контроллере таблицы (например, viewDidLoad). О ограничениях: вы должны установить ограничения для всех меток, каждая таблица должна иметь ограничения для всех сторон (сверху, справа, внизу, слева) – Konstantin

+0

, поэтому нужно установить для всех 3 метки в коде? 4 для 1 этикетки. 12 содержит для 3 этикетки? Я пытаюсь использовать представление стека. Надежда может быть простой –