У меня есть настраиваемая ячейка таблицы, содержащая 3 метки, кнопку и UITextView.
Текст для UITextView известен только во время выполнения, поскольку это данные, которые я извлекаю с сервера.
Я пытаюсь установить правильную высоту как для UITextView, так и для пользовательской ячейки таблицы на основе текста, который я ввел в UITextView.
Текст для UITextView устанавливается в методе - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath.
Здесь я пытаюсь изменить размер UITextView (bodyTextView), используя следующее:
CGSize stringSize = [cell.bodyTextView.text sizeWithFont:cell.bodyTextView.font constrainedToSize:CGSizeMake(cell.bodyTextView.bounds.size.width, 9999) lineBreakMode:NSLineBreakByWordWrapping];
[cell.bodyTextView setText:threadMessage.body];
CGRect bodyFrame = cell.bodyTextView.frame;
bodyFrame.size = cell.bodyTextView.contentSize;
[cell.bodyTextView setFrame:bodyFrame];
Кажется, что это более или менее работает нормально, либо мой UIButton не перемещается туда, где должен, даже несмотря на то, что у него есть ограничение «Top Space To» в нижней части моего UITextView. Я бы подумал, что он автоматически переместится. Однако я могу переместить это в соответствующее место программно, так что не имеет большого значения.
Следующий фрагмент кода устанавливает размер tableViewCell до соответствующей высоты, чтобы поместиться в метки и UITextView, но для кнопки внизу недостаточно места. Затем я вычисляю высоту ячейки и возвращаю ее, используя следующее ...
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath
{
CGSize stringSize = [threadMessage.body sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(280, 9999) lineBreakMode:NSLineBreakByWordWrapping];
float oldHeight = 28;
float newHeight = stringSize.height;
return tableView.rowHeight - oldHeight + newHeight;
}
Как видите, я делаю разницу в высоте между высотой UITextView и новой. Я попытался получить oldHeight программно, но получал сумасшедшие значения, исчисляемые многими тысячами.
Большая проблема в том, что когда представление отображается впервые, размер строки более или менее правильный. Но UITextView не имеет размера. Если я прокручиваю, чтобы переместить его с экрана, а затем прокручиваю его назад, то размер UITextView будет правильным. Но опять же, если я прокручиваю его и снова на экране, он снова меняет размер до одной строки.
Я чувствую, что у меня что-то происходит с курицей или яйцом, и я не могу понять это.
Я надеюсь разобраться с двумя основными проблемами:
1) Как правильно настроить размер UITextView с самого начала и сохранить его независимо от прокрутки экрана и выключения?
2) Как изменить размер моего настраиваемого TableCellView, чтобы включить высоту кнопки?
Я надеюсь, что все это имеет смысл, и я предоставил достаточно подробностей. Сообщите мне о любых вопросах.
Любые предложения будут очень признательны. Спасибо!
С уважением,
Питер