Каков наилучший способ реализации многострочного UITableCell переменного размера? - PullRequest
6 голосов
/ 12 января 2009

Я пытаюсь отобразить таблицу, заполненную статусами твиттера (да, это назначение Stanford Presence 2 ), размер которого варьируется. Я могу относительно легко определить подходящую высоту для моих строк с помощью кода, который приблизительно (из сопровождающей лекции 9 ):

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *) indexPath
{
    NSString *text = ...;
    UIFont *font = [UIFont systemFontOfSize:...];
    CGSize withinSize = CGSizeMake(tableView.width, 1000];
    CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeWordWrap];

    return size.height + somePadding;
}

Я испробовал два подхода (и некоторые настройки обоих), чтобы получить многострочное поле текста для переноса слов в строку таблицы.

  1. Добавьте UILabel в качестве подпредставления к моему пользовательскому подклассу UITableCell и установите для свойства numberOfLines либо вычисленное число, основанное на высоте выше (скажем, 6), либо 0 (теоретически неограниченно). numberOfLines игнорируется; Я вижу 1 или 2 строки, и не более.

  2. Добавить UITextView только для чтения в качестве подпредставления. Это проблема в том, что UITextView съел мою прокрутку; Я заканчиваю тем, что прокручиваю внутри строки UITextView вместо плавного перемещения от строки к строке. Если я отключу прокрутку в UITextView, я вообще не смогу прокрутить.

Это довольно распространенная вещь; Каков наилучший способ сделать это?

Ответы [ 3 ]

3 голосов
/ 12 января 2009

Возможно, вы захотите взглянуть на userInteractionEnabled свойство UITextView. Это должно позволить передавать данные на UITableView, чтобы вы могли прокручивать.

2 голосов
/ 14 марта 2009

Вот ссылка на блог, который я разместил на эту тему. Я использовал UILabel с numberOfLInes = 0. Надеюсь, это поможет.

Пример проекта с изменяемым размером UITableViewCell

0 голосов
/ 13 января 2009

Играя с userInteractionEnabled = NO, scrollEnabled = NO и получая правильные параметры автоматического изменения размера, установленные в IB, я думаю, что использование UILabel с numberOfLines = 0 и теми же параметрами автоматического изменения размера в конечном итоге является лучшей идеей для следующего человек.

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