2015-07-07 4 views
0

Я работаю над приложением, где я показываю комментарий пользователя в UILable и UILable, имеет свойство sizetofit. Я хочу изменить высоту ячейки в соответствии с высотой UILable.Как изменить каждую высоту UITableViewCell динамически?

Мой вопрос: как изменить высоту ячейки, например, высота первой ячейки может составлять 50, вторая - Высота ячейки может быть 100 и так далее.

+0

У вас есть список ожидаемой высоты ячейки? –

ответ

3

Вот простой код, который будет использоваться в Autolayout

Если выразить последние две точки в коде, это выглядит следующим образом:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.tableView.estimatedRowHeight = 44.0; 
    self.tableView.rowHeight = UITableViewAutomaticDimension; 
} 

С помощью всего лишь две строки кода, вы заставляете представление таблицы, чтобы вычислить размер ячейки, соответствующую ее содержимому, и визуализировать ее динамически. Эта функция калибровки ячеек должна сэкономить массу кода и времени. Тебе понравится.

+0

Можете ли вы объяснить, где я использовал этот код? –

+0

вы можете использовать его в viewController, который имеет tableView, и вот полезный учебник, который объясняет шаг за шагом> http://www.fantageek.com/1468/ios-dynamic-table-view-cells-with-varying- строк по высоте и-autolayout / –

0

Вы можете использовать этот метод для увеличения UITableViewCell высоты динамически (без AutoLayout)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    NSMutableAttributedString *strName = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",strItemName]]; 

    [strName addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16] range:NSMakeRange(0, strItemName.length)]; 
    CGSize sizeItemName = CGRectIntegral([strName boundingRectWithSize:CGSizeMake(130, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil]).size; 
    int padding = 5; 
    //your default cell height for ex 55 
    if (sizeItemName.height < 55) 
    { 
     sizeItemName.height = 55; 
    } 
    return sizeItemName.height + padding; 
} 
0

Надеется, что это поможет вам методы Tableview:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewAutomaticDimension; 
} 
0

В вашем heightForRowAtIndexPath, вычислить динамическую высоту, основанную на связанные данные соты.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSDictionary *data = [self.dataSource objectAtIndex:indexPath.row]; 
    return [MyTableViewCell heightForData:data]; 
} 

Тогда в вашем MyTabLeViewCell, написать функцию, как показано ниже, скажем, данные есть «содержание», который является тем фактом, для динамической высоты. И ваш tableViewCell определил UILabel с названием contentLabel с CONTENT_LABEL_WIDTH

+(CGFloat) heightForData : (NSDictionary *)data{ 

    self.contentLabel.text = [data objectForKey:@"content"]; 
    CGSize contentLabelSize = [self.contentLabel sizeThatFits:CGSizeMake(CONTENT_LABEL_WIDTH, CGFLOAT_MAX)]; 

    return contentLabelSize.height; 

    //If you want to have a minimum cell height no matter how small your content is, you can use below fmaxf with a pre-defined CELL_MIN_HEIGHT value. 
    // return fmaxf(CELL_MIN_HEIGHT, height); 
} 
Смежные вопросы