Est-il possible de définir une hauteur minimale pour la cellule? J'utilise dynamique:
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
Mais je dois définir une hauteur minimale pour la cellule lorsque mon news title label text
est sur une ligne.
Avez-vous essayé de créer une contrainte dans la vue de height >= 60.0
de votre UITableViewCell
personnalisée?
Je l'ai. Fait fonctionner comme ci-dessous.
Faites glisser et déposez une vue sur UITableViewCell et définissez les contraintes Leading, fin, haut et bas sur 0. Définissez la contrainte de hauteur sur> = ExpectedMinimumSize.
Dans heightForRowAtIndexPath Delegatemethodhod:
-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
Dans ViewDidLoad:
self.tableView.estimatedRowHeight = 60; // required value.
@Hytek répond à une astuce. Pour cela, vous devez indiquer la contrainte de hauteur minimale.
Par exemple: S'il y a une UILabel
dans votre cellule de tableau et que vous voulez que UILabel
augmente la hauteur conformément au contenu dynamique. Et vous avez le code comme ci-dessous.
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
Il augmentera la hauteur de votre étiquette lorsque le contenu sera plus grand, mais diminuera également lorsque votre contenu sera petit Donc, si vous vous attendez à ce que l'étiquette ait une hauteur minimale, vous devez donner une contrainte de hauteur à votre UILabel
d'une manière qui height >= 30.0
à votre étiquette.
De cette façon, votre UILabel
ne diminuera pas la hauteur inférieure à 30.0
.
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return (UITableView.automaticDimension > minimumHeight) ? UITableView.automaticDimension : minimumHeight
}
Au code de présentation automatique de la cellule personnalisée (Interface Builder ou par programme), ajoutez les contraintes appropriées.
Par exemple. (Par programme dans une cellule personnalisée)
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]];