Я использую автоматический макет и показываю таблицу с настраиваемыми динамическими ячейками. В основном таблица отображает чат между двумя лицами. Таким образом, текстовое сообщение меняется для каждой ячейки.
Проблема в том, что первые ячейки отображаются, а затем в течение секунды, ее содержимое изменяется. Это хорошо видно и выглядит плохо.
Смотрите изображения ниже, чтобы понять, как они выглядят до и после изменения размера.
Перед изменением размера:
 
После изменения размера:
 
Я знаю, что есть аналогичный вопрос  на SO, но его ответ действительно не удовлетворяет потребность. Я хочу избежать переопределения метода layoutSubviews(), поскольку я не считаю его достаточно хорошим решением.
Я попытался сделать код ниже, чтобы отобразить ячейку contentView после ее отображения. Но это не работает.
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
   // At the begining
    cell.contentView.hidden = NO;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    // Before returning cell
    cell.contentView.hidden = YES;
    return cell;
}
Есть ли способ отложить отображение ячейки до тех пор, пока она не будет изменена в соответствии с их содержимым?
ОБНОВЛЕНИЕ:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    chatCell *cell = (chatCell *)[tableView dequeueReusableCellWithIdentifier:CHAT_CELL_IDENTIFIER];
        cell.textString.text = ...;
        cell.textString.frame = ...;
        cell.timeLabel.text = ...;                                             // set timeLabel to display date and time
        cell.userLabel.text = ...;       // set userLabel to display userName
        if (displaying cell where message is sent by user)
        {
            // Set image for sender
            cell.chatCellBackground.image = [[UIImage imageNamed:@"bubbleMine.png"] stretchableImageWithLeftCapWidth:STRETCHED_WIDTH topCapHeight:STRETCHED_HEIGHT];
            cell.chatCellBackground.frame = ...;
        }
        else
        {
            // set bubble for receiver
            cell.chatCellBackground.image = [[UIImage imageNamed:@"bubbleSomeone.png"] stretchableImageWithLeftCapWidth:STRETCHED_WIDTH topCapHeight:STRETCHED_HEIGHT];
            cell.chatCellBackground.frame = ...;
        }
    }
    [cell setNeedsLayout];
    [cell layoutIfNeeded];
    return cell;
}
