当前位置: 首页 > 知识库问答 >
问题:

表节标题:多行/换行

邵璞
2023-03-14

我正在尝试创建一个表,其中的节标题可以是长字符串。我认为我的设置是正确的(动态行数,换行设置),但字符串只是在末尾被截断。请注意,在其他地方,节标题的高度为80,这足以显示大约3行文本。

// Format section header
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    let header: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
    header.contentView.backgroundColor = mainColorBlue
    header.textLabel.textColor = UIColor.whiteColor()

    header.textLabel.textAlignment = NSTextAlignment.Left
    header.textLabel.numberOfLines = 0 // Dynamic number of lines
    header.textLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
    header.textLabel.font = UIFont(name: "HelveticaNeue-Thin", size: 16)!
    header.textLabel.text = objectsArray[section].sectionName

}

共有3个答案

方飞白
2023-03-14

我做了相反的事情,我将行数设置为一个很大的数字,然后动态大小开始工作。

  • 在IB中
  • 不要设置任何WIDTH/HEIGHT常量
  • TableViewCells中只有前导尾随/顶部/底部围绕控件

self . table view . section header height = uitableview automatic dimension;self . table view . estimatedsectionheaderheight = 25;

- (void)viewDidLoad
{
    [super viewDidLoad];

    //-----------------------------------------------------------------------------------
    //DYNAMIC TEXT and TABLE ROW HEIGHT
    //-----------------------------------------------------------------------------------
    self.tableView.estimatedRowHeight = 80.0f;
    //also done in heightForRowAtIndexPath
    self.tableView.rowHeight = UITableViewAutomaticDimension;

    self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension;
    self.tableView.estimatedSectionHeaderHeight = 80.0f;

}
//comment out
//- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {

另请参阅是否可以使用自动布局获得动态表格视图部分标题高度?

长孙淳
2023-03-14

指定自动高度尺寸 -

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return UITableViewAutomaticDimension
}
仲孙鸿畴
2023-03-14

您必须创建自定义标头视图。这就是我所做的 - Swift 3,你必须自定义它以供你使用:

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
//Need to create a label with the text we want in order to figure out height
    let label: UILabel = createHeaderLabel(section)
    let size = label.sizeThatFits(CGSize(width: view.width, height: CGFloat.greatestFiniteMagnitude))
    let padding: CGFloat = 20.0
    return size.height + padding
}

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UITableViewHeaderFooterView()
    let label = createHeaderLabel(section)
    label.autoresizingMask = [.flexibleHeight]
    headerView.addSubview(label)
    return headerView
}

func createHeaderLabel(_ section: Int)->UILabel {
    let widthPadding: CGFloat = 20.0
    let label: UILabel = UILabel(frame: CGRect(x: widthPadding, y: 0, width: self.view.width - widthPadding, height: 0))
    label.text = sectionTextArray[section]// Your text here
    label.numberOfLines = 0;
    label.textAlignment = NSTextAlignment.left
    label.lineBreakMode = NSLineBreakMode.byWordWrapping
    label.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.subheadline) //use your own font here - this font is for accessibility 
    return label
}    
 类似资料:
  • 问题内容: 我正在尝试在导航栏中设置标题标签以允许多行。我有将多行代码放入其中的自定义导航控制器代码。我知道该代码已经可以使用,但是我的多行部分无法使用。 但是文本仍然在结尾处消失。我还尝试将其放入单个视图控制器本身,并在其前面添加相同的结果。 我的代码中缺少某些东西可以防止标题标签使用多行吗? 问题答案: 这是如何创建多行navigationBar标题的代码示例 Swift 5.x:

  • 问题内容: 我有以下数据框: 我要这样 堆叠/堆叠似乎不起作用。 问题答案: 您正在寻找: 以及是否要重新排列列:

  • 如何在下面的代码中添加换行符,使每一行都能说出自己的事实?这能做到吗?

  • 在我的代码中,我使用下面的代码来设置表视图的节标题。它运行良好。 我想自定义标题的背景颜色,所以我在上面的代码之前插入了下面的代码。 结果,背景颜色发生变化,而标题文本丢失。

  • 我正在使用Apache FOP XSL文件格式生成PDF。 我的要求是 PDF格式的表格数据 表大小很大,因此同一表扩展到多页(宽度方向,第一页中的列很少,其他列在下一页上) 第1页有3列(C1、C2、C3) 第2页有5列(C4、C5、C6、C7、C8) 少数单元格可能包含多行数据 问题描述: 当 Page-2 具有第 4 行、第 4 列的多行数据时,其行高会根据内容增加 但是在第 1 页中,第

  • 我有以下数据帧: 我想这样。 堆叠/卸载似乎不工作。