Полудяваш...прочети десетки отговори „ето как го правиш...“, които се различават един от друг и нито един не работи в моя случай. Забърках се с UITextView рамка, граници, contentSize и т.н. и въпреки че виждам тези промени чрез NSLog, крайният изход винаги се връща обратно към оригиналния размер, зададен в StoryBoard.
С помощта на StoryBoard поставих UITextView само за четене в подклас TableViewCell, наречен GroupChatViewCell.
След това просто зареждам шепа текстови низове в UITextView чрез viewDidLoad на Controller. Низовете са обвити с думи и са по-дълги, отколкото могат да се поберат в дефинираната 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 до пълния размер, разпределен в клетката, и правилно да покажа всички редове текст???