Я успешно сделал UITableViewCell
, высота которого изменяется в зависимости от содержимого (используя sizeWithFont
).В настоящее время я пытаюсь заставить свое приложение работать в любой ориентации, поэтому мне пришлось внести несколько изменений в мой код.Первым делом я добавил некоторый код, который перезагружает tableView при каждом изменении ориентации.Это заставляет sizeWithFont
корректировать размер ячейки таблицы.Когда я начинаю в портретной ориентации, я могу поворачивать устройство в любом направлении, и UITableViewCell
автоматически подстраивается под размер текста.
Однако у меня возникла проблема, когда ориентациявлево или вправо, когда таблица изначально загружена.Ширина ячейки (переменная widthVar
в приведенном ниже коде) равна 300, что является шириной ячейки в портретной ориентации.Ожидаемый результат равен 440. Это вызывает нежелательное поле в ячейке табличного представления.Как я могу сделать так, чтобы я получил правильную ширину ячейки?
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"plainDetail";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
UILabel *enchantmentLabel = (UILabel *)[cell viewWithTag:402];
enchantmentLabel.text = [self.enchantmentResultsBrain getDescription:self.enchantmentAndLevel];
CGFloat widthVar = cell.textLabel.frame.size.width;
NSLog(@"size: %f", widthVar);
CGSize maximumLabelSize = CGSizeMake(widthVar, 9999);
CGSize expectedLabelSize = [enchantmentLabel.text sizeWithFont:enchantmentLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:enchantmentLabel.lineBreakMode];
return expectedLabelSize.height+10;
}