我有一個包含表格視圖并顯示自定義單元格的視圖控制器。我正在嘗試使用該traitCollectionDidChange方法(在單元格子類中)對內容大小類別的更改做出反應,但是當此特征發生更改時,永遠不會為單元格呼叫此方法。另一方面,當尺寸類改變時它會被呼叫。
traitCollectionDidChange為視圖控制器呼叫(當內容大小類別發生變化時),我可以手動將呼叫傳播到可見單元格,但感覺像是額外的作業。為什么沒有專門針對內容大小類別更改呼叫單元子類?
編輯推理我為什么要在單元格內呼叫:
當內容大小類別與可訪問性相關聯時,我想將單元格的標簽更改為多行,否則保持單行。我在某些 iOS 應用程式中注意到了這種行為,例如 Apple Music。
uj5u.com熱心網友回復:
您的應用程式中任何需要了解內容大小類別更改的地方都可以注冊UIContentSizeCategory.didChangeNotification.
https://developer.apple.com/documentation/uikit/uicontentsizecategory/1622948-didchangenotification
因此,無需將資訊沿層次結構傳播,只需為該通知設定一個適當的物件暫存器即可。例如,也許您有(或可能有)一個合適的自定義表格視圖單元子類。
至于您實際提出的問題,我所能做的就是提供一個理論。Apple 將 UILabel 之類的東西配置UIContentSizeCategory.didChangeNotification為在表格視圖單元格中時接收。這涉及幕后的一些手帕。我懷疑作為這個手帕的一部分,他們故意阻止單元格本身接收traitCollectionDidChange內容大小類別的變化,因為相同的信號已經以不同的方式到達,他們不想用太多的內容轟炸單元格內容事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/409544.html
標籤:
