Une fois que notre application est exécutée sur iOS 13, le journal est plein d'assertions étranges. Quelqu'un a quelques conseils pour l'enlever?
2019-09-19 08:05:43.528382+0200 Ts-2-cz-test[56066:20590106] [Assert] Current fallback trait collection contains one or more unspecified traits: {(
"_UITraitNameDisplayScale",
"_UITraitNameDisplayCornerRadius",
"_UITraitNameSemanticContext",
"_UITraitNameUserInterfaceLevel",
"_UITraitNamePresentationSemanticContext",
"_UITraitNameVibrancy",
"_UITraitNameDisplayGamut",
"_UITraitNameDebugHighlight",
"_UITraitNamePreferredContentSizeCategory",
"_UITraitNameTouchLevel",
"_UITraitNameAccessibilityContrast",
"_UITraitNameLegibilityWeight"
)}; traitCollection: <UITraitCollection: 0x7fb4ce32ad20; HorizontalSizeClass = Compact>; currentFallbackEnvironment: <UIView: 0x7fb46c421d80; frame = (0 0; 1024 1366); autoresize = W+H; layer = <CALayer: 0x7fb46c421ef0>>
J'ai eu le même problème ici car je remplaçais la propriété traitCollection
(qui n'est pas recommandée par Apple mais je n'ai trouvé aucune autre solution dans mon cas) et la nouvelle traitCollection
Je suis retourné a de nombreux traits non spécifiés (comme l'a dit le message d'erreur).
Alors maintenant, je retourne un nouvel objet traitCollection
mais je l'initialise en ajoutant super.traitCollection
. Donc, dans mon contrôleur de vue, j'ai quelque chose comme:
public override var traitCollection: UITraitCollection {
var newTraitCollection: [UITraitCollection] = [super.traitCollection]
// I need to force size class on iPad
if UIDevice.current.userInterfaceIdiom == .pad {
newTraitCollection += [UITraitCollection(verticalSizeClass: .regular), UITraitCollection(horizontalSizeClass: .compact)]
}
return UITraitCollection(traitsFrom: newTraitCollection)
}
La réponse sélectionnée me donne toujours des erreurs. À la place, vous devez utiliser @NSCopying var overrideTraitCollection: UITraitCollection? { get set }
Voir plus ici
UITraitCollection a changé dans iOS13. Vous pouvez savoir où cette classe a été utilisée.
par exemple: supprimez cette méthode [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassUnspecified]