UITableView单元格detailTextLabel文本对齐方式不起作用

时间:2019-04-03 16:01:20

标签: ios swift uitableview detailtextlabel

我正在尝试格式化UIViewController的detailTextLabel属性中数字的位置。 UIViewTable的detailTextLabel部分中的数字距离右侧太近(如图所示)。

Screenshot of the alignment problem

我尝试过:

cell.detailTextLabel?.textAlignment = .center

但是它不起作用。我已经尝试了.left.right.justified和界面生成器中的各种设置。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "PracticeWord", for: indexPath)

        let sortedPracticeWord = sortedPracticeWords[indexPath.row]
        print("practiceWord is: \(sortedPracticeWord)")

        let split = sortedPracticeWord.components(separatedBy: "::")

        cell.textLabel?.text = split[0]

        cell.textLabel?.textColor = UIColor.white

        cell.selectedBackgroundView = UIView()
        cell.selectedBackgroundView!.backgroundColor = UIColor(white: 1, alpha: 0.20)

        cell.textLabel?.text = split[1]
        cell.detailTextLabel?.text = split[2]
        cell.detailTextLabel?.textAlignment = .center

        print("cell is: \(cell)")
        return cell
    }

我希望每个数字都以“错误”一词的“ g”结尾。

3 个答案:

答案 0 :(得分:0)

我认为这里发生的是,detailTextLabel的大小已调整为适合文本长度,并且整个标签都对齐到右边缘。

我会尝试在添加到详细信息文本标签的文本中添加空格。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "PracticeWord", for: indexPath)

    let sortedPracticeWord = sortedPracticeWords[indexPath.row]
    print("practiceWord is: \(sortedPracticeWord)")

    let split = sortedPracticeWord.components(separatedBy: "::")

    cell.textLabel?.text = split[0]

    cell.textLabel?.textColor = UIColor.white

    cell.selectedBackgroundView = UIView()
    cell.selectedBackgroundView!.backgroundColor = UIColor(white: 1, alpha: 0.20)

    cell.textLabel?.text = split[1]
    cell.detailTextLabel?.text = split[2] + "   "
    cell.detailTextLabel?.textAlignment = .center

    print("cell is: \(cell)")
    return cell
}

答案 1 :(得分:0)

详细信息文本标签仅与内置的UITableViewCell样式一起显示,并且不会遵循对齐方式,因为默认样式会做自己的事情,并且不会给您太多控制。对于简单的东西来说这很好,但很快就会成为任何不重要的事情的限制。

如果要控制放置,则需要使用左右UILabel定义自己的自定义表格单元,并将其严格限制在所需的位置。另外请记住,如果用户更改系统字体大小,您可能仍无法与'g'字符对齐,因此您可能要考虑采用其他设计,或者只是不必担心这种对齐方式。

有关内置样式的说明,请参见https://developer.apple.com/documentation/uikit/uitableviewcell/cellstyle,但是我怀疑如果默认样式不能满足您的要求,则您需要创建自己的样式。

答案 2 :(得分:0)

按照本教程创建自定义单元格后:

creating custom tableview cells in swift

似乎给了我我最初的意图。

New alignment after creating custom cells