Как я могу изменить расположение текста в UITableView? - PullRequest
1 голос
/ 23 мая 2009

Как мне изменить расположение текста И показать полную строку в UITableView?

Вот скриншот того, что у меня есть, как только вы посмотрите на него, вы поймете, что я имею в виду. Спасибо Мое приложение http://img188.imageshack.us/img188/9926/chucknhelp.tif

Ответы [ 3 ]

2 голосов
/ 23 мая 2009

Вы можете сделать это без подклассов UITableViewCell.

В методе tableView:cellForRowAtIndexPath: создайте базовый UITableViewCell и измените свойства UILabel, содержащиеся в этой ячейке. Измените максимальное количество строк, чтобы вместить больше текста в ячейку.

К сожалению, метка ячейки недоступна для свойств, поэтому вам нужно получить ее с помощью свойства subviews.

Конечно, здесь используются подробности реализации UITableViewCell, так что это может нарушить будущие выпуски SDK. Используйте с осторожностью.

Вот пример:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"YourCellId"];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"YourCellId"] autorelease];
        cell.font = [UIFont systemFontOfSize:16];
        UILabel* cellLabel = [cell.contentView.subviews objectAtIndex:0];
        [cellLabel setNumberOfLines:3];
    }
    cell.text = @"Your text";
    return cell;
}

Обновление:

Чтобы установить высоту строки по размеру текста, вы можете сделать следующее:

1. Установите высоту ячейки, чтобы соответствовать тексту.

Вам нужно что-то вроде этого:

CGSize textSize = [text sizeWithFont:font
                   constrainedToSize:CGSizeMake(313, 1000)
                       lineBreakMode:UILineBreakModeWordWrap];
cell.frame = CGRectMake(0.0f, 0.0f, 320.0, textSize.height);

2. Вернуть высоту ячейки в методе tableView:heightForRowAtIndexPath:.

Например, вот так:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell* cell = [self tableView:(UITableView*)self.view cellForRowAtIndexPath:indexPath];
    CGRect cellFrame = cell.frame;
    return cellFrame.size.height;
}
0 голосов
/ 23 мая 2009

Адам имеет право. Для получения более подробной информации (а также метода быстрой молниеносной прокрутки) вы можете проверить эту запись на atebits.com, которая полностью игнорирует подход UILabel.

Пример подкласса UITableViewCell Лорен Брихтер

Вы также можете посмотреть пример TableViewSuite с сайта developer.apple.com Он содержит 5 различных примеров, увеличивающих сложность создания пользовательских таблиц. Последний пример структурно очень похож на учебник на atebits.com.

В лекции 8 из Стэнфордского курса iPhone также все о Scroll и TableViews и приведены некоторые примеры создания подклассов UITableViewCell.

курс iPhone

0 голосов
/ 23 мая 2009

Подкласс UITableViewCell и в методе loadView подкласса создайте UILabel внутри его contentView. Установите этот ярлык, чтобы иметь соответствующую упаковку и местоположение.

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