Adaptação iOS16 Xcode14

1. Alterne entre telas horizontais e verticais

[UIDevice currentDevice] O método de usar setValue:forKey: não está mais disponível no iOS16 e, em seguida, use a solicitação de função em 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. A notificação de rotação da tela não pode ser acionada no iOS16

Você precisa substituir viewWillTransitionToSize:withTransitionCoordinator: de UIViewController e manipular a interface do usuário nesta função.

1.2, iOS16 não pode girar a tela depois de usar YYTextView

Depois de usar UITextView, chame a função requestGeometryUpdateWithPreferences:geometryPreferences errorHandler: A solicitação é inválida e a tela não pode ser girada

Análise: imprima todas as cenas conectadas

Antes de usar YYTextViewimage.png

Depois de usar YYTextViewimage.png

O problema é que existe uma camada adicional de YYTextEffectWindow adicionada por YYTextView na UIWindowScene atual , basta remover essa camada da janela.

2. Xcode14 UIViewController trava quando dealloc

Erro ao depurar no iOS16

O aplicativo contornou a iniciação de desalocação do tempo de execução do objetivo-c para o objeto <%s>并崩溃

O motivo é: IOS16 Apple não permite substituir o método + (void)initialize na categoria de controle do sistema (Categroy)

3. Usando o pacote impresso pelo xcode14, o sistema abaixo do iOS12.2 trava

Use a ferramenta otool para visualizar a descoberta binária

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

Guess you like

Origin juejin.im/post/7146043986707218440