1、反正屏切换
[UIDevice currentDevice] 运用setValue:forKey:的方式在iOS16上面已经不可用,继而要运用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、屏幕旋转告诉在iOS16无法处触发
需求重写UIViewController的viewWillTransitionToSize:withTransitionCoordinator:,在此函数里边处理UI。
1.2、iOS16 运用过YYTextView之后无法旋转屏幕
运用过UITextView之后,再调用函数 requestGeometryUpdateWithPreferences:geometryPreferences errorHandler: 恳求无效,无法旋转屏幕
分析: 打印一切的connectedScenes
运用YYTextView之前
运用YYTextView之后
问题是当时的UIWindowScene里边多了一层YYTextView增加的YYTextEffectWindow,去掉这一层window就可以了。
2、xcode14 UIViewController在dealloc时产生溃散
iOS16调试的时候报错
Application circumvented objective-c runtime dealloc initiation for <%s> object并溃散
原因是: IOS16 苹果不允许重写体系控件分类(Categroy)中重写 + (void)initialize办法
3、运用xcode14打出来的包,在iOS12.2以下的体系产生溃散
运用otool工具查看二进制文件发现
二进制里边多了一个 /usr/lib/swift/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 120.100.0)
处理办法:
Build Phases -> Link Binary With Librarires 里边增加libswiftCoreGraphics.tbd
Apple Recommended(苹果推荐的处理办法)
xcode14 处理办法:
Build Setting -> other link flags 增加 -Wl,-weak-lswiftCoreGraphics
相关链接:Apple Forums 链接