UITextView в TableCell, как установить правильную ширину для универсального приложения

я использую UITextView внутри ячейки tableView, чтобы редактировать текст.

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

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 270, 24)];

[cell addSubview:textName];
[textName release];

}

Это работает, но при запуске на iPad это неправильно.

Я пытался определить ширину ячейки, используя cell.contentView.frame.size.width.

но это всегда возвращает 320.0 как для iPhone, так и для iPad

Также на iPad в ландшафтном режиме ширина ячейки не должна быть больше?

Тео


person teo    schedule 10.03.2011    source источник


Ответы (2)


В идеале вы должны создать собственный UITableViewCell и настроить размеры/позиции элементов управления в layoutSubviews.

Если вы собираетесь добавить элемент управления в tableView:cellForRowAtIndexPath:, вы можете получить ширину из самого tableView:

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)];
person TomSwift    schedule 10.03.2011

  1. Размер ячейки iPad изменяется при добавлении в таблицу после возврата функции. Если вы хотите, чтобы размер текстового поля изменялся вместе с ячейкой, вы можете сделать что-то вроде textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight.
  2. Вы должны добавить пользовательские представления в contentView (например, [cell.contentView addSubview:textName]). Представление содержимого автоматически сжимается, помимо прочего, для работы в режиме редактирования.

Создание подкласса UITableViewCell немного излишне, если вы просто хотите настроить макет — у меня сложилось впечатление, что автоматическое изменение размера быстрее, чем ручное изменение размера с помощью layoutSubviews.

person tc.    schedule 10.03.2011