swift - 表节标题 : multi-line/word wrapping

标签 swift uitableview header word-wrap

我正在尝试制作一个表,其中的节标题可以是长字符串。我以为我的设置正确(动态行数,自动换行设置),但字符串只是在末尾被截断了。请注意,节标题的大小为 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

}

最佳答案

您将必须创建自定义 headerView。这就是我所做的 - 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
}    

关于swift - 表节标题 : multi-line/word wrapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31171404/

相关文章:

swift - 为什么 Swift 需要覆盖泛型父类(super class)的指定初始化器?

swift - 如何控制/覆盖 NSTableView/NSOutlineView 发送的通知

swift - 为什么在第一次启动时我的导航栏在状态栏下面

swift - UIMenuController 在我的表格 View 中不可见

iPhone 表格 View : How to access text field of custom TableViewCell

css - 如何在此网页中锁定标题

ios - 检索框架外的 Storyboard 元素

ios - UITableView 设置为静态单元格。是否可以以编程方式隐藏某些单元格?

javascript - 如果向下滚动则向上滑动标题,反之亦然

c++ - C++中的共享字符串常量