美文网首页
适配iOS 13填坑

适配iOS 13填坑

作者: Geniune | 来源:发表于2019-11-14 13:47 被阅读0次

使用苹果私有API

  1. 获取UISearchBar的_searchField对象
//iOS 13之前:
UITextField *searchField = [searchBar valueForKey:@"_searchField"];//在iOS 13上运行直接Crash

//iOS  13之后应修改成:
UITextField *searchField;
//这里要注意searchTextField属性时从13.0才开始有的,所以针对其他iOS版本,需要做一个容错
if(@available(iOS 13.0, *)){
  searchField = searchBar.searchTextField;
}else{
  searchField = [searchBar valueForKey:@"_searchField"];
}
  1. 改UITextField的placeholder的color属性
//iOS 13之前:
[textField setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];

//iOS  13之后应修改成:
NSMutableAttributedString *placeholderString = [[NSMutableAttributedString alloc] initWithString:placeholder attributes:@{NSForegroundColorAttributeName:[UIColor grayColor]}];
textField.attributedPlaceholder = placeholderString;

UITabBar切换后文字颜色异常

解决办法:

//这里要注意unselectedItemTintColor属性时从10.0才开始有的,所以针对其他iOS版本,需要做一个容错
if(@available(iOS 10.0, *)){
     [[UITabBar appearance] setUnselectedItemTintColor:[UIColor grayColor]];
}

模态交互

若你是使用presentViewController进行跳转的话会发现默认不是全屏了,并且下拉返回之前页面时还会有偶发性的Crash,这里需要修改modalPresentationStyle属性

VC2.modalPresentationStyle = UIModalPresentationFullScreen;
[VC1 presentViewController:VC2 animated:YES completion:nil];

深色模式

iOS 13的几大卖点之一,但是若要适配起来却非常麻烦,开发的工作量着实不小,有两个解决办法:

  1. 配置info.plist的UserInterfaceStyle为Light,暴力搞定;
  2. 老老实实适配,在所有需要设置颜色的地方逐一做判断,并且对应xcassets素材也要修改。

蓝牙隐私Privacy的Key有变化

我们都知道,如果App需要连接蓝牙硬件设备,必须配置info.plist的NSBluetoothPeripheralUsageDescription:

Privacy - Bluetooth Peripheral Usage Description

iOS 13之后,也就是你的Xcode上Deployment Target为13.0+时,需要替换为NSBluetoothAlwaysUsageDescription

Privacy - Bluetooth Always Usage Description

若不更换,在提交构App Store Connect构建版本处理阶段就会被打回,没办法提交审核 - -!

导航栏UIBarButtonItem按钮位置偏移问题

见Git:https://github.com/spicyShrimp/UINavigation-SXFixSpace
可通过修改sx_defaultFixSpace属性来设置按钮偏移的距离,在需要设置导航栏按钮的地方,使用:

//文字按钮
self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithTarget:self action:action title:@"取消"];;
//图片按钮
self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithTarget:self action:action image:[UIImage imageNamed:@"返回"]];

LaunchImage Deprecated

在Project -> Launch Screen File配置中,以前可以指定Assets.xcassets中的LaunchImage作为启动图片
升级至Xcode 11+后系统会默认指定LaunchScreen.storyboard作为启动页,修改上述参数已无效

获取keyWindow的API

UIWindow *window = [[UIApplication sharedApplication].keyWindow];//iOS 13之前
UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];//iOS 13之后keywindow被废弃

Universal Links

微信openSDK适配Universal Links

UIWebView Deprecated

WKWebView替换UIWebView

欢迎各路大神评论/私信小弟补充

如果本文对你有所帮助,记得点个赞哈

相关文章

  • iOS13适配

    参考: iOS13 适配踩坑 - 持续更新 iOS 13 适配要点总结 iOS 13 适配要点总结 1、prese...

  • iOS13适配

    最新iOS13适配填坑记录如下: 1.私有API被封禁(KVC限制),禁止访问。 iOS13中通过KVC方式来获取...

  • 适配iOS 13填坑

    使用苹果私有API 获取UISearchBar的_searchField对象 改UITextField的place...

  • iOS 13适配填坑总结

    前言   前段时间苹果发布了最新系统iOS 13,开发者当然避免不了去适配最新的系统版本,以下我总结了在适配过程中...

  • iOS13 适配问题 看这一篇就够了

    技术参考: apple login IOS13适配-详细 iOS 13 适配(持续更新中) iOS13适配 掘金 ...

  • iOS 13适配

    技术参考: apple login IOS13适配-详细 iOS 13 适配(持续更新中) iOS13适配 掘金 ...

  • iOS 13 适配要点总结(转)

    转自: iOS 13 适配要点总结 iOS 13适配

  • 暗黑模式开发

    iOS13暗黑模式适配(项目开发版) iOS 13 DarkMode 暗黑模式 IOS 暗黑模式适配---基础适配

  • 适配iOS11&iPhoneX的一些坑

    适配iOS11&iPhoneX的一些坑 适配iOS11&iPhoneX的一些坑

  • iOS端IM开发从入门到填坑

    iOS端IM开发从入门到填坑 iOS端IM开发从入门到填坑

网友评论

      本文标题:适配iOS 13填坑

      本文链接:https://www.haomeiwen.com/subject/wqxrictx.html