gpt4 book ai didi

iOS UITableView 动态宽度

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

我有一个 UITableView,其中包含包含基本字符串的单元格。目前,我将表格的框架硬设置为 400 的宽度。我想知道是否有一种方法可以根据行中最长的单词调整框架。我试图获取我的单元格 textLabel 值,但它们总是返回 null。我试图在网上搜索任何帮助,但我只看到有关更改高度的引用资料。

非常感谢任何建议。

最佳答案

数据源(通常是 UITableViewController)可以计算它提供给 UITableView 的任何字符串的最大宽度。此时数据源可以修改 UITableView 的框架,这应该会激活 UITableView 的重新加载机制。感谢NSString UIKit Additions计算字符串的最大宽度很容易。还要注意通过指定最大宽度(您提到的 400)来设置表格宽度的限制。

    CGFloat maxWidth = 0.0;
CGSize maxSize = CGSizeMake(400,99999);
CGFloat cellIndent = 0; //Use this to account for any cell indenting
for(NSString * text in datasource.array){

CGSize textSize = [text sizeWithFont:yourFont
constrainedToSize:maxSize
lineBreakMode:UILineBreakModeWordWrap];

maxWidth = MAX(maxWidth,textSize.width + 2.0*cellIndent);
}

//Now change the tableView's frame
CGRect newFrame = tableView.frame;
newFrame.size.width = maxWidth;
tableView.frame = newFrame;

//I don't believe a table reload is necessary let me know
[tableView reloadData];

您还应该考虑在更改宽度后 TableView 将如何定位。由于框架的原点从未被修改,表格 View 的左上角将保持在相同的位置,但它会向右增长。

关于iOS UITableView 动态宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9220178/

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