拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 为什么在内容大小类别更改时不为表格视图单元呼叫traitCollectionDidChange?

为什么在内容大小类别更改时不为表格视图单元呼叫traitCollectionDidChange?

白鹭 - 2022-02-13 1989 0 0

我有一个包含表格视图并显示自定义单元格的视图控制器。我正在尝试使用该traitCollectionDidChange方法(在单元格子类中)对内容大小类别的更改做出反应,但是当此特征发生更改时,永远不会为单元格呼叫此方法。另一方面,当尺寸类改变时它会被呼叫。

traitCollectionDidChange为视图控制器呼叫(当内容大小类别发生变化时),我可以手动将呼叫传播到可见单元格,但感觉象是额外的作业。为什么没有专门针对内容大小类别更改呼叫单元子类?

编辑推理我为什么要在单元格内呼叫:

当内容大小类别与可访问性相关联时,我想将单元格的标签更改为多行,否则保持单行。我在某些 iOS 应用程序中注意到了这种行为,例如 Apple Music。

uj5u.com热心网友回复:

您的应用程序中任何需要了解内容大小类别更改的地方都可以注册UIContentSizeCategory.didChangeNotification.

https://developer.apple.com/documentation/uikit/uicontentsizecategory/1622948-didchangenotification

因此,无需将信息沿层次结构传播,只需为该通知设定一个适当的物件暂存器即可。例如,也许您有(或可能有)一个合适的自定义表格视图单元子类。


至于您实际提出的问题,我所能做的就是提供一个理论。Apple 将 UILabel 之类的东西配置UIContentSizeCategory.didChangeNotification在表格视图单元格中接收这涉及幕后的一些手帕。我怀疑作为这个手帕的一部分,他们故意阻止单元格本身接收traitCollectionDidChange内容大小类别的变化,因为相同的信号已经以不同的方式到达,他们不想用太多的内容轰炸单元格内容事件。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *