如何在动态类型的UIContentSizeCategoryDidChangeNotification后更新约束

时间:2019-02-23 18:07:39

标签: ios autolayout accessibility

该视图使用“可读内容指南”来布局子视图,但是当用户在“辅助功能”设置中更改文本大小时,约束不会更新。我实现了UIContentSizeCategoryDidChangeNotification并尝试了updateConstraintsIfNeededlayoutIfNeeded来查看布局是否发生了变化,但这是行不通的。 UITableView会自动执行此操作,而其他UIViews不会。

(屏幕快照不会更改文本大小,因为我仍在实现动态字体大小,但是表头和单元格正在使用readableLayoutGuide。)

首次运行:

Screen on first run

在设置中更改文字大小后:

Screen after changing the text size

任何强制更新的方法,以便UI可以在运行时响应文本大小更改,而无需重新启动应用程序(当我重新启动时,它会成功应用新大小)。

1 个答案:

答案 0 :(得分:0)

adjustsFontForContentSizeCategory属性的文本样式是强制性的,强制可以根据需要使用Dynamic Type(希望您做到了。首先)

处理字体大小更改事件时,如果要在iOS10中编程应用程序,则必须重新显示受影响的元素,如this中的代码段所述。

关于标准表格视图单元格的内容,由于单元格大小调整功能,它会自动调整。

Building Apps with Dynamic Type WWDC this site中的所有内容都得到了很好的解释,其中指示了所有内容及其视频时移,以便迅速获取信息。

我建议您看一下示例部分,其中提供了针对基本Dynamic Type陷阱的解决方案。