У меня есть UITableView с двумя динамическими строками. Каждая из строк является подклассом UITableViewCell и загружается из кончика. Поскольку мои строки содержат динамическое содержимое, я использую layoutSubviews для изменения положения всех подпредставлений:
- (void)layoutSubviews
{
[super layoutSubviews];
CGFloat initialHeight = titleLabel.bounds.size.height;
CGSize constraintSize = CGSizeMake(titleLabel.bounds.size.width, MAXFLOAT);
CGSize size = [titleLabel.text sizeWithFont:titleLabel.font constrainedToSize:constraintSize];
CGFloat delta = size.height - initialHeight;
CGRect titleFrame = titleLabel.frame;
titleFrame.size.height += delta;
titleLabel.frame = titleFrame;
locationLabel.frame = CGRectOffset(locationLabel.frame, 0, delta);
dayLabel.frame = CGRectOffset(dayLabel.frame, 0, delta);
timeLabel.frame = CGRectOffset(timeLabel.frame, 0, delta);
}
Проблема в том, что я не могу найти способ определения высоты в табличном представлении делегата табличного представления: heightForRowAtIndexPath: метод.
Хитрость в том, что я загружаю ячейку из пера, поэтому сразу после того, как она загружена titleLabel.bounds.size.width 300 px (как в nib), без учета типа устройства (iPhone / iPad) и текущей ориентации Таким образом, кажется невозможным рассчитать высоту без условных проверок ориентации и типа устройства. Есть идеи?