gpt4 book ai didi

ios - 无法在 cellForRowAtIndexPath 中获取单元格框架或约束

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:51 24 4
gpt4 key购买 nike

问题

我正在尝试根据特定条件调整放置在 UITableViewCell 中的 UIButton 的一些约束。

我在数据源方法 cellForRowAtIndexPath 中执行此操作。但是,我的单元格的框架似乎总是以 (0, 0, 0, 0) 的形式返回,这意味着我无法获得任何 subview 的约束来调整它们,除非我滚动。

我尝试过的

我有created and uploaded a simple project试图确定问题。以下是来自 cellForRowAtIndexPath 的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

TestCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TestCell"];
cell.label.text = [NSString stringWithFormat:@"%lu", indexPath.row];

NSLog(@"CELL FRAME: %f, INDEXPATH: %lu, CONSTRAINTS: %lu", CGRectGetWidth(cell.frame), indexPath.row, cell.label.constraints.count);

return cell;
}

结果

当我运行项目时,我看到以下日志:

CELL FRAME WIDTH: 0.000000, INDEXPATH: 0, CONSTRAINTS: 0

但是,一旦我滚动,我就会开始看到类似这样的内容:

CELL FRAME WIDTH: 320.000000, INDEXPATH: 7, CONSTRAINTS: 2

问题

我在这里做错了什么?我怎样才能获得我的单元格 subview 的约束来调整它们,而不必先滚动?

提前致谢。

最佳答案

tableView:willDisplayCell:forRowAtIndexPath: 方法中调整单元格。

cellForRowAtIndexPath: 方法中,单元格的框架尚未设置,并且单元格尚未添加到 TableView 中。太早了。

更好的方法是将责任放在 TestCell 类的实现中。

关于ios - 无法在 cellForRowAtIndexPath 中获取单元格框架或约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27757660/

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