У меня есть функция, когда пользователь нажимает на ячейку, ячейка расширяется, чтобы отображать больше меток. Высота пересчитывается во время расширения и основывается на размере моей самой первой метки или второй метки на ячейке в зависимости от того, что больше.Choppy label on UITableViewCell
Ниже мой код для вычисления высоты:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGSize labelSize;
if ([self.expandedCells containsObject:indexPath]) {
// Calculate the cell height based on the address details or branch name which ever is greater.
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
BranchDetails *branchDetail = ((BranchDetails *)[self.branchDetails objectAtIndex:[indexPath row]]);
NSString *addressText = branchDetail.addressDetails;
CGSize addressLabelSize = [addressText boundingRectWithSize:CGSizeMake(tableView.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:cellFont} context:nil].size;
NSString *branchNameText = branchDetail.branchName;
CGSize branchLabelSize = [branchNameText boundingRectWithSize:CGSizeMake(tableView.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:cellFont} context:nil].size;
labelSize = (addressLabelSize.height > branchLabelSize.height) ? addressLabelSize : branchLabelSize;
}
else {
NSString *cellText = [self.branchList objectAtIndex:[indexPath row]];
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
labelSize = [cellText boundingRectWithSize:CGSizeMake(tableView.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:cellFont} context:nil].size;
}
CGFloat cellHeight = labelSize.height + 20;
return [self.expandedCells containsObject:indexPath] ? cellHeight * 4 : cellHeight;
}
Choppy метка ячейки изображения:
Я попытался добавить вид прокрутки при создании ячейки в cellForRowAtIndexPath поэтому пользователь может видеть все детали в ячейке. Код для прокрутки:
UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 100)];
[cell.contentView addSubview:scrollView];
Это по-прежнему добавляет свиток на стол, а не внутри ячейки.
Есть ли лучший способ для меня вычислить высоту, чтобы все ярлыки внутри ячейки отображались или добавляли прокрутку внутри ячейки, чтобы пользователь мог прокручивать каждую ячейку после расширения, чтобы увидеть все детали?
Вместо того, чтобы вычислять высоту, почему бы вам не использовать UIAutomaticDimensions для расширенной ячейки? Я предполагаю, что при нажатии на ячейку вы вставляете другую ячейку. – Rikh