gpt4 book ai didi

ios - 如何使用自动布局动态更改 UITableViewCell 的高度?

转载 作者:可可西里 更新时间:2023-11-01 05:43:03 25 4
gpt4 key购买 nike

一个自适应大小的 UITableViewCell:MyTableViewCell.m

-(void) viewDidLoad{
UIView *sample = [[UIView alloc] init];
[self.contentView addSubview: sample];

//Fake code here. Let sample view fill the whole contentView:
Constraint1: sample.leading = contentView.leading;
Constraint2: sample.trailing = contentView.trailing;
Constraint3: sample.top = contentView.top;
Constraint4: sample.bottom = contentView.bottom;
Constraint5: sample.height = 20;
NSLayoutConstraint:activateConstriant(constraints 1-5);
}

此代码有效,MyTableViewCell 的高度为 20。

但是,我想在运行时更改高度(在将此单元格添加到 UITableView 之后),所以我向 MyTableViewCell.m 添加了一个新方法

-(void) updateHeight:(CGFloat)newHeight{
//Fake code here. change the constant of constraint1
Constraint1 = get reference of Constraint1 in viewDidLoad();
Constraint1.constant = newHeight
}

我运行代码并调用 updateHeight:10 并收到日志警告:

2017-03-16 16:23:11.102858 [14541:568021] [LayoutConstraints] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. ( "", "", "", "" ) Will attempt to recover by breaking constraint

我自己的观点是,我在 viewDidLoad 中创建的约束会自动创建一些其他约束,例如 contentView.height=20 并且我对原始约束的更改与约束冲突系统创建的。

我测试了在 updateHeight: 中更改示例 View 的行距而不是高度,并且成功了!因为 leading 的变化不影响 contentView 自身的高度约束?

像这种情况,我应该如何动态更改自动布局?

谢谢~~~

最佳答案

要获得动态单元格大小,您需要实现以下方法

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return <your estimated cell height>;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}

关于ios - 如何使用自动布局动态更改 UITableViewCell 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42829003/

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