Что я хочу - это табличное представление сообщений, представленных в виде карт. (например, в приложении для Facebook)Динамическая высота этикетки внутри UITableCell при повороте
Я сделал динамическое uitableview с пользовательским uitablecell и разместил там uiview с двумя ярлыками - название и субтитры. Высота ячейки измеряется вручную в соответствии с прогнозируемой высотой надписей внутри heightForRowAtIndexPath, а высота меток измеряется автоматически с помощью ограничений по высоте с низким приоритетом.
Все работает отлично в портретном режиме. Когда ориентация меняется на ландшафт - uitablecell и uiview внутри, она отлично меняет их высоту, но высота надписей, контролируемых ограничениями, остается такой же, как и перед вращением.
UPDATE:
Just made a bottom space constraint... Я не могу на самом деле это поверить, потому что я делал это раньше без помощи, но все выглядит близко к нормальному. Немного лаг метки высота еще здесь ..
КОД:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger title_size = 17;
NSInteger subtitle_size = 14;
NSInteger card_horizontal_margin = 10 * 2;
NSInteger cell_horizontal_margin = 10 * 2;
NSInteger full_horizontal_margin = card_horizontal_margin + cell_horizontal_margin;
NSInteger nameHeight = 0;
NSInteger descHeight = 0;
NSArray *items = [userDefaults objectForKey: feedType];
NSString *descText = [[items valueForKey:@"description"] objectAtIndex:indexPath.row];
NSString *nameText = [[items valueForKey:@"name"] objectAtIndex:indexPath.row];
NSInteger line_width = self.tableView.frame.size.width - full_horizontal_margin;
if (![nameText isEqual:[NSNull null]]) {
CGSize nameTextSize = [nameText sizeWithFont:[UIFont boldSystemFontOfSize:title_size] constrainedToSize:CGSizeMake(line_width, 1000.0f) lineBreakMode:NSLineBreakByWordWrapping];
nameHeight = nameTextSize.height;
}
if (![descText isEqual:[NSNull null]]) {
CGSize descTextSize = [descText sizeWithFont:[UIFont systemFontOfSize:subtitle_size] constrainedToSize:CGSizeMake(line_width, 1000.0f) lineBreakMode:NSLineBreakByWordWrapping];
descHeight = descTextSize.height;
}
NSInteger full_height = nameHeight + descHeight + 50;
return full_height;
}
КАК исправить эту
Просто сделал 2 высокого приоритета ограничений для каждой метки и измеряют их в методе layoutSubviews из класс ячеек. Это было очень просто, и теперь все отлично работает.
Вы пытались добавить ограничение со дна субтитров в нижней части ячейки? – Stakenborg