UITableViewController的基本(静态)单元格标签内的动态类型 - 是否可能?

时间:2016-11-07 14:25:58

标签: ios uitableview

问题是相当自我解释的,我可能会遗漏一些简单的东西。以下内容在Interface Builder中完成。

我创建了一个UITableViewController,我已将内容设置为Static Cells,样式设置为Grouped

我已经定义了各个部分的数量以及每个部分的行数。我已将每个单元格的样式设置为Basic

现在,在每个单元格中,我都有默认的内容视图和标签。对于标签,我将文字设置为Plain,将字体设置为Body,将行设置为0。通常,这允许我使用UILabel实现动态类型。

我将单元格连接为IBOutlets并以编程方式设置其文本。

当我运行应用程序时,一切都在那里,除了标签的字体(以及每个单元格的高度)不变(不是动态类型)。

因此,我的问题是,是否可以为Basic(非Custom)静态单元格内的标签实现动态类型,或者这些单元格是否为"因为它们是" ;

我在SO上看到的最接近的问题是this,但是它指的是Custom个细胞。

也尝试实施

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.rowHeight = UITableViewAutomaticDimension
}

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

但无济于事。

1 个答案:

答案 0 :(得分:0)

动态类型可以与静态表一起使用,但在我的测试中,只是没有使用" Basic"细胞类型。将其更改为" Custom"单元格类型,添加标签和四个约束,并确保选择其中一种动态字体(例如"标题3和#34;)。

如果您希望相应地调整单元格高度,请确保您同时具有顶部和底部约束。正如您所发现的,您不能将行高设置为UITableViewAutomaticDimension,而是必须实现该委托方法,例如在Swift 3:

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.estimatedRowHeight = 44
}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

sample