iOS10-iOS16主要适配回顾

ios16适配

  • APP切换横竖屏问题
    iOS16之前切换横竖屏使用的是UIDevice的setValue:forKey:方法进行切换。但在iOS16后不再支持使用setValue方法设置设备的方向,建议替换为UIWindowScene 的requestGeometryUpdate方法。

///竖屏
if (@available(iOS 16.0, *)) {
    [self.navigationController setNeedsUpdateOfSupportedInterfaceOrientations];
    NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects];
    UIWindowScene *ws = (UIWindowScene *)array[0];
    UIWindowSceneGeometryPreferencesIOS *geometryPreferences = [[UIWindowSceneGeometryPreferencesIOS alloc] init];
    geometryPreferences.interfaceOrientations = UIInterfaceOrientationMaskPortrait;
    [ws requestGeometryUpdateWithPreferences:geometryPreferences errorHandler:^(NSError * _Nonnull error) {
         //业务代码
    }];
} else {
    [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIDeviceOrientationUnknown] forKey:@"orientation"];
    [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIDeviceOrientationPortrait] forKey:@"orientation"];
}
//横屏
if (@available(iOS 16.0, *)) {
    [self.navigationController setNeedsUpdateOfSupportedInterfaceOrientations];
    NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects];
    UIWindowScene *ws = (UIWindowScene *)array[0];
    UIWindowSceneGeometryPreferencesIOS *geometryPreferences =     [[UIWindowSceneGeometryPreferencesIOS alloc] init];
    geometryPreferences.interfaceOrientations =     UIInterfaceOrientationMaskLandscapeLeft;
    [ws requestGeometryUpdateWithPreferences:geometryPreferences     errorHandler:^(NSError * _Nonnull error) {
         //业务代码
    }];
} else {
    [[UIDevice currentDevice] setValue:[NSNumber   numberWithInteger:UIDeviceOrientationUnknown] forKey:@"orientation"];
    [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIDeviceOrientationLandscapeLeft] forKey:@"orientation"];
}

ios15适配

  • 1、UITabar、NaBar新增scrollEdgeAppearance,来描述滚动视图滚动到bar边缘时的外观,即使没有滚动视图也需要去指定scrollEdgeAppearance,否则可能导致bar的背景设置无效。具体可以参考UIBarAppearance 和UINavigationBar适配
  • 2、tableView 增加sectionHeaderTopPadding属性,默认值是UITableViewAutomaticDimension,可能会使tableView sectionHeader多处一段距离,需要设置 为

  • 3、IDFA 请求权限不弹框问题,解决参考iOS15 ATTrackingManager请求权限不弹框

  • 4、iOS15终于迎来了UIButton的这个改动

  • 5、iOS15崩溃日志分析

ios14适配

  • 1、更改了cell布局视图,之前将视图加载在cell上,将会出现contentView遮罩,导致事件无法响应,必须将customView 放在 contentView 上

  • 2、UIDatePicker默认样式不再是以前的,需要设置preferredDatePickerStyle为 UIDatePickerStyleWheels。

  • 3、IDFA必须要用户用户授权处理,否则获取不到IDFA

  • 4、 UIPageControl的变化 具体参考iOS 14 UIPageControl对比、升级与适配

  • 5、在iOS14之后访问相册新增了Limited Photo Library Access 模式,在授权弹窗中增加了 Select Photo 选项。

ios13适配

-1、 iOS 13 推出暗黑模式,UIKit 提供新的系统颜色和 api 来适配不同颜色模式,xcassets 对素材适配也做了调整

  • 2、支持第三方登录必须,就必须Sign In with Apple

  • 3、MPMoviePlayerController 废弃

  • 4、iOS 13 DeviceToken有变化

  • 5、模态弹出默认不再是全屏。

  • 6、私有方法 KVC 不允许使用

  • 7、蓝牙权限需要申请

  • 8、LaunchImage 被弃用

  • 9、 可以使用UITableViewDiffableDataSource进行局部刷新

  • 9、新出UIBarAppearance统一配置navigation bars、tab bars、 toolbars等bars的外观。之前设置na bar和tab bar外观的方法可能会无效

ios12适配

  • 1、C++ 标准库libstdc++相关的3个库(libstdc++、libstdc++.6、libstdc++6.0.9 )废弃,使用libc++代替

  • 2、短信 验证码自动填充api

if (@available(iOS 12.0, *)) {
        codeTextFiled.textContentType = UITextContentTypeOneTimeCode;
    }

ios11适配

  • 1、ViewController的automaticallyAdjustsScrollViewInsets属性被废弃,用scrollView的contentInsetAdjustmentBehavior代替。
  • 2、safeAreaLayoutGuide的引入
  • 3、tableView默认开启了Size-self
  • 4、新增的prefersLargeTitles属性
  • 5、改善圆角,layer新增了maskedCorners属性
  • 6、tableView右滑删除新增api
  • 7、导航条的层级发生了变化。例如在设置titleView时,可能会出现不期望的布局显示。
  • 8、 相册权限变更
    iOS11以前: NSPhotoLibraryUsageDescription:访问相册和存储照片到相册(读写),会出现用户授权; iOS11之后: NSPhotoLibraryUsageDescription:无需添加。默认开启访问相册权限(读),无需用户授权; NSPhotoLibraryAddUsageDescription: 添加内容到相册(写),会出现用户授权;

ios10适配

  • 1、通知统一使用UserNotifications.framework框架

  • 2、UICollectionViewCell的的优化,新增加Pre-Fetching预加载机制

  • 3、苹果加强了对隐私数据的保护,要对隐私数据权限做一个适配,iOS10调用相机,访问通讯录,访问相册等都要在info.plist中加入权限访问描述,不然之前你们的项目涉及到这些权限的地方就会直接crash掉。

  • 4、AVPlayer增加了多个属性,timeControlStatus、
    automaticallyWaitsToMinimizeStalling
    AVPlayer有时候播放不了的问题

  • 5、tabar未选中颜色设置 用 unselectedItemTintColor代替

你可能感兴趣的:(iOS10-iOS16主要适配回顾)