Я пытаюсь изучить макет авто, наконец-то подумал, что получаю зависание, когда это произошло. Я играю с прототипами ячеек и ярлыков. Я пытаюсь иметь
-  Заголовок, titleLbl- синяя рамка в изображении
-  Деньги, moneyLbl- зеленый квадрат на картинке
-  Субтитры/Описание, subTitleLbl- красная рамка в изображении
Пока у меня есть это:
 
Чего я хочу достичь:
- Зеленый ящик должен всегда отображаться на 1 линии полностью
- Значение внутри зеленого окна должно быть центрировано в соответствии с синим полем
- Синий квадрат займет оставшееся пространство (-8px для горизонтального ограничения между 2) и отображает на нескольких строках, если необходимо
- Красное поле должно быть внизу и отображать как можно больше строк.
Как вы видите, это почти все работает, за исключением примера в последней строке. Я попытался исследовать это и из того, что я могу собрать, это как-то связано с внутренним размером содержимого. Многие сообщения в Интернете рекомендуют установку setPreferredMaxLayoutWidth, я сделал это в нескольких местах для titleLbl, и это не повлияло. Только когда hardcoding на 180 я получил результаты, но также добавил пробелы/дополнения к другим синим полям вверху/под текстом, значительно увеличивая пространство между красными/синими квадратами.
Вот мои ограничения:
Название:

Деньги:

Субтитры:

Основываясь на тестах, которые я запускал с другими текстовыми образцами, он, похоже, использует ширину, как показано в раскадровке, но любая попытка исправить ее не работает.
Я создал ivar ячейки и использовал его для создания высоты ячейки:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    [sizingCellTitleSubMoney.titleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"title"]];
    [sizingCellTitleSubMoney.subtitleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"subtitle"]];
    [sizingCellTitleSubMoney.moneyLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"cost"]];
    [sizingCellTitleSubMoney layoutIfNeeded];
    CGSize size = [sizingCellTitleSubMoney.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    return size.height+1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MATitleSubtitleMoneyTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifierTitleSubTitleMoney];
    if(!cell)
    {
        cell = [[MATitleSubtitleMoneyTableViewCell alloc] init];
    }
    cell.titleLbl.layer.borderColor = [UIColor blueColor].CGColor;
    cell.titleLbl.layer.borderWidth = 1;
    cell.subtitleLbl.layer.borderColor = [UIColor redColor].CGColor;
    cell.subtitleLbl.layer.borderWidth = 1;
    cell.moneyLbl.layer.borderColor = [UIColor greenColor].CGColor;
    cell.moneyLbl.layer.borderWidth = 1;
    [cell.titleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"title"]];
    [cell.subtitleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"subtitle"]];
    [cell.moneyLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"cost"]];
    return cell;
}
Я пробовал настройку setPreferredMaxLayoutWidth внутри подклассов ячейки:
- (void)layoutSubviews
{
    [super layoutSubviews];
    NSLog(@"Money lbl: %@", NSStringFromCGRect(self.moneyLbl.frame));
    NSLog(@"prefferredMaxSize: %f \n\n", self.moneyLbl.frame.origin.x-8);
    [self.titleLbl setPreferredMaxLayoutWidth: self.moneyLbl.frame.origin.x-8];
}
Журнал:
2014-04-30 21:37:32.475 AutoLayoutTestBed[652:60b] Money lbl: {{209, 20}, {91, 61}}
2014-04-30 21:37:32.475 AutoLayoutTestBed[652:60b] prefferredMaxSize: 201.000000 
Это то, что я ожидал бы, так как 8px между двумя элементами и консоль проверяет это. Он отлично работает в первой строке, независимо от того, сколько текста я добавляю в синюю рамку, что совпадает с раскадрой, но любое увеличение до зеленой коробки отменяет вычисление ширины. Я попытался установить это в tableView:willDisplayCell и tableView:heightForRowAtIndexPath:, а также на основе ответов других вопросов. Но независимо от того, что это просто не макет.
Любая помощь, идеи или комментарии были бы с благодарностью
