我有一个包含表格视图并显示自定义单元格的视图控制器。我正在尝试使用该traitCollectionDidChange
方法(在单元格子类中)对内容大小类别的更改做出反应,但是当此特征发生更改时,永远不会为单元格呼叫此方法。另一方面,当尺寸类改变时它会被呼叫。
traitCollectionDidChange
为视图控制器呼叫(当内容大小类别发生变化时),我可以手动将呼叫传播到可见单元格,但感觉象是额外的作业。为什么没有专门针对内容大小类别更改呼叫单元子类?
编辑推理我为什么要在单元格内呼叫:
当内容大小类别与可访问性相关联时,我想将单元格的标签更改为多行,否则保持单行。我在某些 iOS 应用程序中注意到了这种行为,例如 Apple Music。
uj5u.com热心网友回复:
您的应用程序中任何需要了解内容大小类别更改的地方都可以注册UIContentSizeCategory.didChangeNotification
.
https://developer.apple.com/documentation/uikit/uicontentsizecategory/1622948-didchangenotification
因此,无需将信息沿层次结构传播,只需为该通知设定一个适当的物件暂存器即可。例如,也许您有(或可能有)一个合适的自定义表格视图单元子类。
至于您实际提出的问题,我所能做的就是提供一个理论。Apple 将 UILabel 之类的东西配置UIContentSizeCategory.didChangeNotification
为在表格视图单元格中时接收。这涉及幕后的一些手帕。我怀疑作为这个手帕的一部分,他们故意阻止单元格本身接收traitCollectionDidChange
内容大小类别的变化,因为相同的信号已经以不同的方式到达,他们不想用太多的内容轰炸单元格内容事件。
0 评论