Adaptation iOS16 Xcode14

1. Basculer entre les écrans horizontaux et verticaux

[UIDevice currentDevice] La méthode d'utilisation de setValue:forKey : n'est plus disponible sur iOS16, puis utilisez la demande de fonction dans UIWindowScene

if (@available(iOS 16.0, *)) {
    UIWindowScene *windowScene = (UIWindowScene *)[[[UIApplication sharedApplication] connectedScenes] allObjects].firstObject;
    UIWindowSceneGeometryPreferencesIOS *perference = [[UIWindowSceneGeometryPreferencesIOS alloc] init];
    perference.interfaceOrientations = 1 << deviceOrientation;
    [windowScene requestGeometryUpdateWithPreferences:perference errorHandler:^(NSError * _Nonnull error) {
        NSLog(@"error--%@", error);
    }];
} else {
        [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:deviceOrientation] forKey:@"orientation"];
        [UIViewController attemptRotationToDeviceOrientation];
}


复制代码

1.1. La notification de rotation d'écran ne peut pas être déclenchée dans iOS16

Vous devez remplacer viewWillTransitionToSize:withTransitionCoordinator: de UIViewController et gérer l'interface utilisateur dans cette fonction.

1.2, iOS16 ne peut pas faire pivoter l'écran après avoir utilisé YYTextView

Après avoir utilisé UITextView, appelez la fonction requestGeometryUpdateWithPreferences:geometryPreferences errorHandler : la requête est invalide et l'écran ne peut pas être tourné

Analyse : imprimer toutes les scènes connectées

Avant d'utiliser YYTextViewimage.png

Après avoir utilisé YYTextViewimage.png

Le problème est qu'il y a une couche supplémentaire de YYTextEffectWindow ajoutée par YYTextView dans le UIWindowScene actuel , supprimez simplement cette couche de fenêtre.

2. Xcode14 UIViewController se bloque lorsque dealloc

Erreur lors du débogage dans iOS16

L'application a contourné l'initiation de dealloc d'exécution objective-c pour l'objet <%s>并崩溃

La raison est la suivante : IOS16 Apple n'autorise pas le remplacement de la méthode d'initialisation + (void) dans la catégorie de contrôle du système (Categroy)

3. En utilisant le package imprimé par xcode14, le système sous iOS12.2 se bloque

Utilisez l'outil otool pour afficher la découverte binaire

image.png

二进制里面多了一个 /usr/lib/swift/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 120.100.0)

解决方法:

Build Phases -> Link Binary With Librarires 里面添加libswiftCoreGraphics.tbd

Je suppose que tu aimes

Origine juejin.im/post/7146043986707218440
conseillé
Classement