2016-08-08 4 views
0

У меня есть настроенный UITableviewCell. Внутри есть ярлык с надписью и ярлык.Подгонянные UITableViewCell Update Подсмотры

Теперь я хочу настроить атрибуты ярлыков деталей в соответствии с содержанием. Если размер строки больше, чем кадр, то установите количество линии 2.

Я попытался поместить код в cellForRowAtIndexPath или layoutSubViews в классе клеток.

Кусок кода, как

TransportationViewCell* cell = [tableView cellForRowAtIndexPath:indexPath]; 
UIFont* font = cell.detailLabel.font; 
NSDictionary* attribute = @{NSFontAttributeName:font}; 
const CGSize textSize = [cell.detailLabel.text sizeWithAttributes: attribute]; 

if (textSize.width > cell.detailTextLabel.frame.size.width && cell.detailLabel.numberOfLines == 1) { 

    NSLog(@"%lf, %lf, %lu", cell.detailLabel.frame.size.width, textSize.width, (long)cell.detailLabel.numberOfLines); 
    cell.detailTextLabel.font = [UIFont systemFontOfSize:8]; 
    cell.detailTextLabel.numberOfLines = 2; 

    [cell setNeedsLayout]; 
} 

Это на самом деле прошло, если условие, но установка метки не работает.

+1

Возможно, вы вводите в заблуждение между detailLabel и detailTextLabel? Второе, что вам не нужно вызывать здесь «[cell setNeedsLayout]», он должен работать без этого. – Nikita

ответ

1

записи ниже кода в целях didload

self.theTableView.estimatedRowHeight = 100; 
self.theTableView.rowHeight = UITableViewAutomaticDimension; 

[self.theTableView setNeedsLayout]; 
[self.theTableView layoutIfNeeded]; 

В cellForRowAtIndexpath cell.detailTextLabel.numberOfLines = 0;

0

набор numberOfLines = 0;

это решит вашу проблему.

Редактировать 1: код для расчета динамической высоты.

CGSize boundingBox = [label.text boundingRectWithSize:constraint 
               options:NSStringDrawingUsesLineFragmentOrigin 
              attributes:@{NSFontAttributeName:label.font} 
               context:context].size; 

На основании этой высоты вы можете выполнить дальнейшие расчеты.

Для получения дополнительной информации, вы можете проверить этот ответ https://stackoverflow.com/a/27374760/5660422

+0

Но мне все еще нужно динамически устанавливать размер шрифта где-то – Mix

+0

ok sure, answer отредактировал @Mix –

Смежные вопросы