0


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{}
标签: xcode ios objective-c

本文转载自: https://blog.csdn.net/wujakf/article/details/126133680
版权归原作者 wuwuFQ 所有, 如有侵权,请联系我们删除。

“iOS16.0:屏幕旋转”的评论:

还没有评论