gpt4 book ai didi

iphone - UITableView 已加载(完成绘制单元格)

转载 作者:行者123 更新时间:2023-12-03 18:46:18 35 4
gpt4 key购买 nike

问题

如何检测 TableView 何时完成绘制单元格?

问题

我在 UITableViewCell 的 contentView 中得到了两个标签。这些标签的大小是动态的。我可以通过子类化 UITableViewCell 来做到这一点,在 drawRect 方法中,我根据两个标签的内容调整它们的框架。现在我想对齐所有第二个标签。

我的逐步想法

  1. 确定表格 View 中的内容并让它自动加载。
  2. 遍历表格 View 单元格并确定 UITableViewCell 中最远的第二个标签的 x 位置。
  3. 存储此 x 位置,并在绘制任何单元格时使用此 x 位置放置第二个标签。

问题是,如果我使用以下代码:

for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) {
UITableViewCustomCell *cell = (UITableViewCustomCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:0]];
NSLog ([cell.labelTwo description]);
}

第二个标签尚未绘制,这意味着我无法确定框架的大小,因此无法找到正确的 x 位置来对齐所有第二个标签。

我尝试对 UITableViewController 进行子类化并查看 viewDidLoad 和 viewDidAppear 等事件,不幸的是在这些事件中单元格尚未绘制。

我想要什么...

我想要的是 TableView 至少绘制一次单元格,以便我可以确定 TableView 单元格内标签的大小。我想通过使用 cellForRow 循环遍历所有单元格来实现此目的,但尽管它成功返回单元格,但内容尚未绘制,这意味着框架的宽度仍为零。

有人有解决办法吗?

提前致谢,

标记

最佳答案

尝试调用 sizeWithFont:在绘制任何内容之前,先在这些标签的内容上获取最大宽度。您应该能够稍后在 cellForRowAtIndexPath: 中使用它来根据需要调整宽度。

我建议您重新考虑使用UITableViewCellStyleValue2单元格,并尝试配置textLabel和detailTextLabel。我有类似的情况和this我就是这么做的。

关于iphone - UITableView 已加载(完成绘制单元格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139979/

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