自动调整UITableView的字体大小

时间:2018-07-24 17:47:12

标签: ios swift uitableview

对于我的UITableView之一,要允许更多文本或较大字体大小的文本适合字段,我需要添加或调整字体大小。

我将布尔值用于adjustsFontSizeToFitWidth。并且clipsToBounds = true。但这并不总是对我有用,不确定为什么它会不一致,尤其是当您要包含较大的字体时。有更正吗?

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UIView()
    let headerLabel = UILabel(frame: CGRect(x: 40, y: 0, width:
        tableView.bounds.size.width, height: tableView.bounds.size.height))
    headerLabel.textColor = UIColor.white
    headerLabel.text = self.tableView(self.tableView, titleForHeaderInSection: section)
    headerLabel.sizeToFit()
    headerLabel.adjustsFontSizeToFitWidth = true
    headerLabel.clipsToBounds=true
    headerLabel.numberOfLines=0
    headerLabel.lineBreakMode = NSLineBreakMode.byTruncatingTail
    headerLabel.minimumScaleFactor = 0.2
    headerView.addSubview(headerLabel)

    return headerView
}

2 个答案:

答案 0 :(得分:1)

删除以下内容可能是

headerLabel.sizeToFit()

这将使

adjustsFontSizeToFitWidth

财产运作。

答案 1 :(得分:0)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
    if searching {
        cell?.textLabel?.text = searchedLabour[indexPath.row]
        cell?.textLabel?.sizeToFit()
        cell?.textLabel?.adjustsFontSizeToFitWidth = true
        cell?.textLabel?.numberOfLines = 2
        cell?.textLabel?.lineBreakMode = NSLineBreakMode.byTruncatingTail
    } else {
        cell?.textLabel?.text = labourWordsArray[indexPath.row]
        cell?.textLabel?.sizeToFit()
        cell?.textLabel?.adjustsFontSizeToFitWidth = true
        cell?.textLabel?.numberOfLines = 2
        cell?.textLabel?.lineBreakMode = NSLineBreakMode.byTruncatingTail
    }
    return cell!
}