UITableView不更新动态类型更改的标签

时间:2015-10-04 11:48:56

标签: ios uitableview interface-builder accessibility

我正在使用自定义UITableViewCell和自定义xib。为支持动态类型,我通过在UIContentSizeCategoryDidChangeNotification

中收听来实施viewDidLoad()
func didChangeContentSizeCategory(notification: NSNotification)
{
    // Dynamic Type preferences were updated. Reload UI.

    myTableView.reloadData()
}

我的自定义xibs使用Interface Builder中的字体描述符:

enter image description here

即使触发了此通知(使用断点进行测试)并且调用了myTableView的{​​{1}}方法,它也不会更新标签的内容以使用新值。

根据我的理解,这应该可以在我不做任何其他事情的情况下工作,是吗?

1 个答案:

答案 0 :(得分:1)

使用自动布局和自行调整大小单元时,UITableView中动态类型的自动支持有效。

因此,如果您不这样做,则可能需要在重新计算单元格的任何位置显式更新单元格的UILabel字体属性,因为reloadData()似乎没有这样做。

例如,在cellForRowAtIndexPath:调用中返回您的单元格之前:

cell.headline.font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)

因此,当发布UIContentSizeCategoryDidChangeNotification时,即使应用正在运行,它也会明确触发字体更新。