UITextView в TableCell, Как установить правильную ширину для универсального приложения - PullRequest
6 голосов
/ 10 марта 2011

Я использую 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 это не правильно.

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

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

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

Teo

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

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

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

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)];
1 голос
/ 10 марта 2011
  1. Размер ячейки iPad изменяется при добавлении в таблицу после возврата из функции. Если вы хотите, чтобы размер текстового поля изменялся с ячейкой, вы можете сделать что-то вроде textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight.
  2. Вы должны добавить пользовательские представления в contentView (т.е. [cell.contentView addSubview:textName]). Помимо прочего, представление содержимого автоматически сжимается для обработки в режиме редактирования.

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

...