gpt4 book ai didi

objective-c - 动态计算自定义 UITableViewCell 的高度

转载 作者:行者123 更新时间:2023-12-05 07:54:24 26 4
gpt4 key购买 nike

我正在构建一个没有 IB 的应用程序,并且我正在从头开始编写所有内容。我有一个自定义的 UITableViewCell,当我尝试计算高度时,它的行为就像没有 subview 一样。我可以找到很多关于动态设置高度的讨论,但没有关于如何根据 subview 以及如何以及在何处设置约束来计算高度的讨论。我所做的是为我的第一个组件 - UIImageView 设置约束并将它们添加到我的单元格的 contenView 中。我得到的是0。

我将不胜感激任何关于那个或至少方向的意见!

heightForRowAtIndexPath:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell* cell = [[UITableViewCell alloc]init];
cell.imageView.image = [UIImage imageNamed:@"avatar"];

cell.imageView.translatesAutoresizingMaskIntoConstraints=NO;

NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-30-[image]" options:0 metrics:nil views:@{ @"image": cell.imageView }];

[cell.contentView addConstraints:constraints];

NSArray *constraints2 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[image]" options:0 metrics:nil views:@{ @"image": cell.imageView}];

[cell.contentView addConstraints:constraints2];

[ NSLayoutConstraint constraintWithItem:cell.imageView attribute: NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual toItem:cell.imageView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0.0f];

CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

NSLog(@"%f",height);

return height;

}

最佳答案

我对这类问题的解决方案是UITableViewAutomaticDimension。您只需在 heightForRowAtIndexPath 方法中返回它。您必须将 tableView.estimatedRowHeight 设置为接近您将获得的值。

例如,如果您有 5 个高度为 [100,200,250,270,300] 的单元格,您可以将 estimatedRowHeight 设置为 220(或类似值)。

您可以在 Using Auto Layout in UITableView for dynamic cell layouts & variable row heights 查看第一个答案

关于objective-c - 动态计算自定义 UITableViewCell 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31404624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com