web-dev-qa-db-fra.com

Assert La collection de caractères de secours actuelle contient un ou plusieurs traits non spécifiés:

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>>
8
Jan Loose

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)
}
13
Y.Bonafons

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

0
Rindom

UITraitCollection a changé dans iOS13. Vous pouvez savoir où cette classe a été utilisée.

par exemple: supprimez cette méthode [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassUnspecified]

0
Simon Hu