UIScene devient obligatoire avec IOS 27. Plus le choix, il faut passer toutes les vielles applications à UIScene. Avec les scènes, la fenêtre principale n'est plus attachée à l'application mais à une scène. UIApplicationDelegate contient toujours la fonction de lancement didFinishLaunchingWithOptions:. C'est toujours un bon endroit pour initialiser des variables globales, et pour mettre les valeurs par défaut de NSUserDefaults.standardUserDefaults. On perd les fonctions applicationDidBecomeActive:, applicationWillResignActive:, applicationWillEnterForeground:, application:openURL:options:, qui se retrouvent, soit dans UISceneDelegate, soit sous forme de notification, soit les deux. Deux fonctions s'ajoute dans AppDelegate, une pour la connection d'une scène et une pour la déconnection : #pragma mark - UISceneSession lifecycle - ( UISceneConfiguration *) application :( UIApplication *)application configurationForConnectingSceneSession :( U...
Sur IOS26 est apparu un bug sur mes vieilles applications. La barre système se retrouve au-dessus de mon application, mais tout revient dans l'ordre après une rotation de l'appareil. Après quelques recherche, c'est un bug IOS26 que de nombreux développeurs ont... Mais sans vraie solution. En fait c'est le SafeArea de la vue principale qui ne contient pas de marge top avant la rotation. Une solution serait d'en mettre une, mais SafeAreaInets est en lecture seule. Il faut utiliser additionalSafeAreaInsets du viewController à la place : -( void ) viewWillAppear :( BOOL )animated { [ super viewWillAppear :animated]; if ( @available (iOS 26 ,*)) { if ( self . view . safeAreaInsets . top == 0 ) { UIEdgeInsets insets = UIEdgeInsetsMake ( 32 , 0 , 0 , 0 );; self . additionalSafeAreaInsets = insets; } } Mais ce n'est pas suffisant, car après rotation le SafeAreaInets est bon, et donc le additionnalSafeAreaInsets doit être remis à zéro : -( void )...