Ответ 1
Вы пытались создать ограничение в своем пользовательском представлении UITableViewCell
height >= 60.0
?
Можно ли установить минимальную высоту для ячейки? Я использую dynamic:
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
Но мне нужно установить минимальную высоту для ячейки, когда мой news title label text
находится в одной строке.
Вы пытались создать ограничение в своем пользовательском представлении UITableViewCell
height >= 60.0
?
Получил это. Сделал работу, как показано ниже.
Перетащите вид сверху UITableViewCell и установите ограничения Ведущий, конечный, верхний и нижний как 0. Задайте ограничение по высоте как >= Ожидаемое. Минимальное значение.
В heightForRowAtIndexPath Delegatemethod:
-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
В ViewDidLoad:
self.tableView.estimatedRowHeight = 60; // required value.
Есть трюк, на который отвечает @Hytek. Для этого вы должны дать ограничение на минимальную высоту.
Например: если в ячейке таблицы есть один UILabel
и вы хотите, чтобы UILabel
увеличивал высоту в соответствии с динамическим содержимым. И у вас есть код, как показано ниже.
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
Это увеличит высоту вашего ярлыка, когда контент будет больше, но также уменьшится, когда ваш контент будет маленьким. Таким образом, если вы ожидаете, что метка должна иметь минимальную высоту, тогда вы должны задать ограничение высоты для вашей UILabel
таким образом, чтобы height >= 30.0
для вашей метки.
Таким образом, ваша UILabel
не уменьшит высоту менее 30.0
.
В коде автоматического компоновки настраиваемой ячейки (либо построитель интерфейса, либо программно) добавьте соответствующие ограничения.
например. (Программно в пользовательской ячейке)
UILabel * label = [UILabel new];
[self.contentView addSubview:label];
NSDictionary * views = NSDictionaryOfVariableBindings(label);
//Inset 5 px
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[label]-5-|" options:0 metrics:nil views:views]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-5-[label]-5-|" options:0 metrics:nil views:views]];
// height >= 44
[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:self.mainLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:44.0]];
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return (UITableView.automaticDimension > minimumHeight) ? UITableView.automaticDimension : minimumHeight
}