Как установить UITableViewCellStyleSubtitle textAlignment по центру в iPhone iOS4? - PullRequest
2 голосов
/ 23 июня 2010

После обновления XCode до версии 3.2.3 с iPhone SDK 4 мой код больше не работает.

У меня есть ячейка по умолчанию со стилем UITableViewCellStyleSubtitle и я хочу установить textAlignment из textLabel и detailTextLabel в center, но ничего не происходит. Тот же код, что и раньше, теперь не работает. На UITableViewCellStyleDefault выравнивание по центру все еще работает.

Кто-нибудь знает, как это решить? Я не хочу использовать пользовательскую ячейку только на самом деле.

Ответы [ 3 ]

4 голосов
/ 23 июня 2010

Причина, по которой текст не центрируется, заключается в том, что метка имеет такую ​​же ширину, как и текст. Вы можете подтвердить это, установив цвет фона текстовой метки:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.textLabel.backgroundColor = [UIColor orangeColor];
}

Установка ширины ячейки вручную также не оказывает никакого влияния. Таким образом, вы действительно должны добавить свои собственные подпредставления или создать свой собственный подкласс UITableViewCell.

Документы для UITableViewCellStyleSubtitle даже говорят:

Стиль для ячейки с по левому краю наклейка сверху и метка с выравниванием по левому краю под ней, поменьше серый текст. Приложение iPod использует клетки в этом стиле.

1 голос
/ 06 декабря 2012

это решение, состоящее из двух частей, для изменения ширины надписи после рендеринга, что позволяет центрированию произойти:

-- (void) updateCenteringForTextLabelInCell:(UITableViewCell*)cell {

    UILabel* label = cell.textLabel;

    label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, cell.contentView.frame.size.width, label.frame.size.height);

}


-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

// do your usual

// call the helper method 

[self performSelector:@selector(updateCenteringForTextLabelInCell:) withObject:cell afterDelay:0.05];

}
0 голосов
/ 15 января 2011

ОК, наконец, команда разработчиков Apple ответила на мое сообщение об ошибке от 23 июня 2010 года:

"Пожалуйста, попробуйте установить выравнивание текста в layoutSubviews после вызова super."

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