Я использую пользовательские ячейки в TableView.Пользовательская ячейка с переменной высотой
Высота ячейки вычисляется на основе NSString, загружаемой в UILabel ячейки. Размер вычисляется с использованием этой функции
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
NSString *text = [self getTableViewRow:tableView index:indexPath];
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
CGFloat height = MAX(size.height, 44.0f);
return height + (CELL_CONTENT_MARGIN * 2) + 60;
}
Размер рассчитывается правильно, но когда ячейка загружается в UITableView, строка имеет правильную высоту, но клетка не имеет.
Здесь я создаю мою клетку
//Com Custom Cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"CustomCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCellApresentacao" owner:self options:nil];
if ([nib count] > 0)
cell = self.tvCell;
else
NSLog(@"Falhou a carregar o xib");
}
NSInteger row = [indexPath row];
if(self.myTableView1 == tableView)
labelDescricaoApresentacao.text = [listData1 objectAtIndex:row];
else if (self.myTableView2 == tableView)
labelDescricaoApresentacao.text = [listData2 objectAtIndex:row];
else
labelDescricaoApresentacao.text = [listData3 objectAtIndex:row];
return cell;
}
я пытался изменить высоту ячейки в этом методе с использованием
cell.frame.size.height
, но он по-прежнему didn't загружен правильный heigth.
Нужно ли мне что-либо делать в xib пользовательского набора? Как обновить вершину ячейки до того же размера, что и строка?
Если я поставил cell.frame.size.height = 30.0f, например, он дает ошибку «выражение не назначается» – bruno
cell.frame = CGRectMake (0,0, ширина, высота) – NeverBe
ах да, конечно , спасибо за исправление – picciano