Получить размер UITextView из UITableViewCell? - PullRequest
1 голос
/ 26 июня 2011

У меня есть свой пользовательский UITableViewCell с UITextView в нем. После загрузки UITableView мне нужно отрегулировать размер UITableViewCell с размером текста в UITextView. Поэтому я пытаюсь это так:

  - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
  {
      CGFloat resHeigth;

      resHeigth = MyCell.textView.contentSize.height;
      resHeigth += TOP_BOTTOM_MARGINS * 2;

      return resHeigth;
  }

Но heightForRowAtIndexPath вызывается перед cellForRowAtIndexPath, где я на самом деле устанавливаю текст.

  MyViewCell *cell = (MyViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];

    if (cell == nil) {

        [[NSBundle mainBundle] loadNibNamed:@"MyCellView" owner:self options:nil];
        cell = MyCell;
    }

    cell.textView.text  = @"Text for test\nTest";

    CGRect frame = cell.textView.frame;
    frame.size.height = cell.textView.contentSize.height;
    cell.textView.frame = frame;

Итак, возможно ли изменить высоту UITableViewCell?

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

Используйте методы из NSString UIKit Additions , чтобы вычислить размер текста.

CGSize sz = [yourText sizeWithFont:cellTextFont constrainedToSize:CGSizeMake(textFieldWidth,CGFLOAT_MAX);

Возвращает размер текста, если он ограничен фиксированным размером и не ограничен по вертикали (CGFLOAT_MAX является максимальным значением для чисел с плавающей запятой)

0 голосов
/ 26 июня 2011

Если у вас есть текст, доступный как NSString, то вы можете использовать метод экземпляра NSString sizeWithFont: constrainedToSize: lineBreakMode: , чтобы измерить размер, который будет принимать эта строка. Используя это, вы можете установить высоту ячейки в методе heightForRowAtIndexPath.

Обновление: В параметре constrainedToSize вы можете установить высоту на очень высокое значение (например, int max или высоту экрана), чтобы она возвращала полную высоту, которую принимает эта строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...