Ширина detailTextLabel в ячейке со стилем UITableViewCellStyleValue2 - PullRequest
4 голосов
/ 30 сентября 2010

Я новичок в переполнении стека и разработке касания какао.

Я пытаюсь построить UITableViewCell с использованием UITableViewCellSytleValue2 с многострочным detailTextLabel.

Поэтому я реализовалthe tableView: heightForRowAtIndexPath: примерно так:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

 if (indexPath.row != 4) {
  return tableView.rowHeight;
 }

 NSString *text = toDoItem.note;
 UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
 CGSize withinSize = CGSizeMake(167, 1000);
 CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeCharacterWrap];

 CGFloat height = size.height + 26;

    return height;    
}

Я выяснил, что ширина detailTextLabel составляет приблизительно 167 пикселей, но я хочу знать это точно, и мне не нравится это жестко (учитывая изменения ориентации).

Я пытался получить доступ к фрейму или границей detailTextLabel, но для его ширины он возвращает 0.0.

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 16 мая 2013

Вы можете определить статический набор переменных в пользовательской реализации UITableViewCell, которая устанавливает эти виды параметров в layoutSubviews, если и только если не установлено. Обязательно сначала позвоните [super layoutSubviews].

Таким образом, вы наследуете устройства по умолчанию, и вам никогда не придется удивляться.
AFAIK, ширина ячейки self.contentView.frame.size.width. Вы можете использовать self.textLabel.frame.size.width и self.detailTextLabel.frame.size.width и self.accessoryView.frame.size.width + отступы между каждым, чтобы выяснить детали. Я не на 100% на дополнение. Но вы можете рассчитать заполнение, обнаружив разницу между шириной метки и шириной кадра contentView.

К сожалению. Я забыл, что detailTextLabel размеры ячейки всегда меняются; и определенно не полагаться на период. Вы можете получить ширину метки на основе ширины владеющего UIViewController и ячеек textLabel. Поскольку расчеты находятся на уровне контроллера, вы будете знать, сгруппирован ли tableView. И если это так, вы можете просто уменьшить ширину в 0,8 раза и вычесть ширину textLabel.

Аналогично для шрифтов: self.textLabel.font.pointSize и self.detailTextLabel.font.pointSize.

0 голосов
/ 30 сентября 2010

Создание пользовательской ячейки

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