Схожу с ума... прочитал десятки ответов "вот как ты это делаешь...", которые все отличаются друг от друга, и ни один из них не работает в моем случае. Я запутался с рамкой UITextView, границами, contentSize и т. д., и хотя я вижу эти изменения через NSLog, конечный результат всегда возвращается к исходному размеру, установленному в StoryBoard.
Используя StoryBoard, я поместил UITextView только для чтения в подкласс TableViewCell с именем GroupChatViewCell.
Затем я просто загружаю несколько текстовых строк в UITextView через viewDidLoad контроллера. Строки переносятся по словам и длиннее, чем могут поместиться в определенном кадре UITextView.
Я изменяю размер ячейки TableView (которая работает) в делегате TableView:heightForRowAtIndexPath и пытаюсь изменить размер UITextView (не работает) в делегате TableView:cellForRowAtIndexPath.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"GroupChatViewCell";
GroupChatViewCell *cell = (GroupChatViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[GroupChatViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
// Retrieve the MessageData for the given row
GroupMessageData *aMessageData = [messageThreadArray objectAtIndex:indexPath.row];
[cell.messageLabel setText:aMessageData.msgText];
[cell.messageLabel sizeToFit];
// [cell.messageLabel layoutIfNeeded]; --> Did try with this, does not work
// [cell.messageLabel layoutSubviews]; --> Did try with this, does not work
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
GroupMessageData *aMessageData = [messageThreadArray objectAtIndex:indexPath.row];
GroupChatViewCell *cell = (GroupChatViewCell *)[tableView dequeueReusableCellWithIdentifier:@"GrooupChatViewCell"];
UIFont *cellFont = [UIFont systemFontOfSize:12];
CGSize constraintSize = CGSizeMake(CGRectGetWidth(cell.bounds), MAXFLOAT);
CGSize labelSize = [aMessageData.msgText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
return ceil(labelSize.height + 60);
}
Я получаю увеличенный размер для TableCell, но не для UITextView, который не изменился и обрезался до исходного размера, установленного в StoryBoard, и отображал только 3 подходящие строки текста.
Что мне нужно сделать и где, чтобы увеличить высоту UITextView до полного размера, выделенного в ячейке, и правильно отобразить все строки текста???