Adaptación iOS16 Xcode14

1. Cambiar entre pantallas horizontales y verticales

[UIDevice currentDevice] El método de usar setValue:forKey: ya no está disponible en iOS16, y luego use la solicitud de función en 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 notificación de rotación de pantalla no se puede activar en iOS16

Debe anular viewWillTransitionToSize:withTransitionCoordinator: de UIViewController y manejar la interfaz de usuario en esta función.

1.2, iOS16 no puede rotar la pantalla después de usar YYTextView

Después de usar UITextView, llame a la función requestGeometryUpdateWithPreferences:geometryPreferences errorHandler: la solicitud no es válida y la pantalla no se puede rotar

Análisis: imprime todas las escenas conectadas

Antes de usar YYTextViewimage.png

Después de usar YYTextViewimage.png

El problema es que hay una capa adicional de YYTextEffectWindow agregada por YYTextView en la UIWindowScene actual , simplemente elimine esta capa de la ventana.

2. Xcode14 UIViewController falla cuando dealloc

Error al depurar en iOS16

La aplicación eludió el inicio de la asignación del tiempo de ejecución de Objective-C para el objeto <%s>并崩溃

La razón es: IOS16 Apple no permite anular el método de inicialización + (vacío) en la categoría de control del sistema (Categroy)

3. Usando el paquete impreso por xcode14, el sistema debajo de iOS12.2 falla

Use la herramienta otool para ver el descubrimiento binario

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

Supongo que te gusta

Origin juejin.im/post/7146043986707218440
Recomendado
Clasificación