问题是相当自我解释的,我可能会遗漏一些简单的东西。以下内容在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
}
但无济于事。
答案 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
}