iOS16.0:屏幕旋转

Posted wuwuFQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS16.0:屏幕旋转相关的知识,希望对你有一定的参考价值。

此文写于2022年08月03日,距离ios16正式版推出还有一个多月的时间,iOS16 beta版本有很多API的修改,今天讨论的是屏幕旋转,基于Xcode 14.0 beta4
之前的屏幕旋转会报错:
[Orientation] BUG IN CLIENT OF UIKIT: Setting UIDevice.orientation is not supported. Please use UIWindowScene.requestGeometryUpdate(_:)

那我们看看 UIWindowScene.requestGeometryUpdate(_:) 怎么使用呢?

- (void)requestGeometryUpdateWithPreferences:(UIWindowSceneGeometryPreferences *)geometryPreferences 
                                errorHandler:(void (^)(NSError *error))errorHandler;

找到 Method 看到需要入参 UIWindowSceneGeometryPreferences *


UIWindowSceneGeometryPreferences 也是新增的API,很明显 UIWindowSceneGeometryPreferencesIOS 才是我们需要的。

- (instancetype)initWithInterfaceOrientations:(UIInterfaceOrientationMask)interfaceOrientations;

UIWindowSceneGeometryPreferencesIOS 有个实例方法传入一个枚举UIInterfaceOrientationMask ,到这就算摸清API使用的脉络了。

iOS16.0+ 横屏代码:

        if (@available(iOS 16.0, *)) 
            [self setNeedsUpdateOfSupportedInterfaceOrientations];
            [self.navigationController setNeedsUpdateOfSupportedInterfaceOrientations];

            NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects];
            UIWindowScene *scene = (UIWindowScene *)array[0];
            UIWindowSceneGeometryPreferencesIOS *geometryPreferences = [[UIWindowSceneGeometryPreferencesIOS alloc] initWithInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
            [scene requestGeometryUpdateWithPreferences:geometryPreferences
                errorHandler:^(NSError * _Nonnull error) 
                NSLog(@"wuwuFQ:%@", error);
            ];
            
         else 

		

以上是关于iOS16.0:屏幕旋转的主要内容,如果未能解决你的问题,请参考以下文章

iOS16.0:屏幕旋转

iOS学习笔记— 屏幕旋转

IOS屏幕旋转

iOS 8 自动旋转将图像旋转到屏幕外

iOS 屏幕旋转的设置方法

iOS实现屏幕旋转