为什么内容大小类别更改时不为 table 视图单元格调用 traitCollectionDidChange?
Why is traitCollectionDidChange not called for a table view cell when content size category changes?
我有一个包含 table 视图并显示自定义单元格的视图控制器。我正在尝试使用 traitCollectionDidChange
方法(在单元格 subclass 内)对内容大小类别更改做出反应,但是当此特征更改时,永远不会为单元格调用此方法。另一方面,当大小 class 改变时它会被调用。
traitCollectionDidChange
为视图控制器调用(当内容大小类别发生变化时),我可以手动将调用传播到可见单元格,但这感觉像是额外的工作。为什么不调用专门用于内容大小类别更改的单元格子classes?
编辑我想在单元格内调用的原因:
当内容大小类别为 associated with accessibility 时,我想将单元格的标签更改为多行,否则保持单行。我在某些 iOS 应用程序中注意到了这种行为,例如苹果音乐。
您应用中任何需要了解内容大小类别更改的地方都可以注册 UIContentSizeCategory.didChangeNotification
。
https://developer.apple.com/documentation/uikit/uicontentsizecategory/1622948-didchangenotification
因此,您无需将信息向下传播到层次结构中,只需为该通知注册一个合适的对象即可。例如,也许您有(或可能有)一个自定义的 table 视图单元格子类,这是合适的。
至于你实际提出的问题,我只能提供一个理论。 Apple 将 UILabel 之类的东西配置为在 在 table 视图单元格 中时接收 UIContentSizeCategory.didChangeNotification
。这涉及到一些幕后花招。我怀疑作为这个手帕的一部分,他们故意阻止单元 本身 接收 traitCollectionDidChange
内容大小类别更改,因为相同的信号已经到达不同的方式,他们不想用太多事件轰炸单元格内容。
我有一个包含 table 视图并显示自定义单元格的视图控制器。我正在尝试使用 traitCollectionDidChange
方法(在单元格 subclass 内)对内容大小类别更改做出反应,但是当此特征更改时,永远不会为单元格调用此方法。另一方面,当大小 class 改变时它会被调用。
traitCollectionDidChange
为视图控制器调用(当内容大小类别发生变化时),我可以手动将调用传播到可见单元格,但这感觉像是额外的工作。为什么不调用专门用于内容大小类别更改的单元格子classes?
编辑我想在单元格内调用的原因:
当内容大小类别为 associated with accessibility 时,我想将单元格的标签更改为多行,否则保持单行。我在某些 iOS 应用程序中注意到了这种行为,例如苹果音乐。
您应用中任何需要了解内容大小类别更改的地方都可以注册 UIContentSizeCategory.didChangeNotification
。
https://developer.apple.com/documentation/uikit/uicontentsizecategory/1622948-didchangenotification
因此,您无需将信息向下传播到层次结构中,只需为该通知注册一个合适的对象即可。例如,也许您有(或可能有)一个自定义的 table 视图单元格子类,这是合适的。
至于你实际提出的问题,我只能提供一个理论。 Apple 将 UILabel 之类的东西配置为在 在 table 视图单元格 中时接收 UIContentSizeCategory.didChangeNotification
。这涉及到一些幕后花招。我怀疑作为这个手帕的一部分,他们故意阻止单元 本身 接收 traitCollectionDidChange
内容大小类别更改,因为相同的信号已经到达不同的方式,他们不想用太多事件轰炸单元格内容。