私有KVC
与系统版本无关,与Xcode
版本有关,Xcode11
编译会奔溃。
其中UITextField
[textField setValue:[UIColor xxx] forKeyPath:@"_placeholderLabel.textColor"];
dis -n "-[UITextField valueForKey:]" 命令
其中UISearchBar
[self setValue:@"xxx " forKey:@"_cancelButtonText"];
iOS 13
的searchbar
添加了一个- (void)set_cancelButtonText:(NSString *)text
方法,这个方法专门用来命中kvc
。一旦命中 就 crash
通过计算TabBar上的图片位置设置红点,红点位置有偏移
如果之前有通过TabBar上图片位置来设置红点位置,在iOS13上会发现显示位置都在最左边去了。遍历UITabBarButton
的subViews
发现只有在TabBar
选中状态下才能取到UITabBarSwappableImageView
,解决办法是修改为通过UITabBarButton
的位置来设置红点的frame
。
黑夜模式
Apps on iOS 13 are expected to support dark mode Use system colors and materials Create your own dynamic colors and images Leverage flexible infrastructure
Apps on iOS 13 are expected to support dark mode Use system colors and materials
审核强制要求适配黑夜模式,近在咫尺。
苹果登录
Sign In with Apple will be available for beta testing this summer. It will be required as an option for users in apps that support third-party sign-in when it is commercially available later this year.
如果 APP 支持三方登陆(Facbook、Google、微信、QQ、支付宝等),就必须支持苹果登陆,且要放前边。
对于非iOS平台,Web、Android 可以使用 JS SDK,网页版本登录,逻辑类似、Facebook、QQ登录。
建议支持使用Apple提供的按钮样式,已经适配各类设备。
模态弹出默认交互改变
Defines the presentation style that will be used for this view controller when it is presented modally. Set this property on the view controller to be presented, not the presenter.
If this property has been set to UIModalPresentationAutomatic, reading it will always return a concrete presentation style. By default UIViewController resolves UIModalPresentationAutomatic to UIModalPresentationPageSheet, but other system-provided view controllers may resolve UIModalPresentationAutomatic to other concrete presentation styles.
iOS 13 的 presentViewController 默认有视差效果,模态出来的界面现在默认都下滑返回。 一些页面必须要点确认才能消失的,需要适配。如果项目中页面高度全部是屏幕尺寸,那么多出来的导航高度会出现问题。
App启动过程中部分View可能无法实时获取到frame
可能是为了优化启动速度,App 启动过程中,部分View可能无法实时获取到正确的frame
AppDelegate
获取DeviceToken
失败
以下方法中:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
在iOS 13中可以通过以下方法获取:
let token = [UInt8](deviceToken).map{String(format: "%02x", $0)}.joined()
print("\(token)")