iOS11适配点击按钮崩溃
来源:互联网 发布:csgo淘宝黄金版 编辑:程序博客网 时间:2024/06/05 21:07
iOS 11出来也个把月了,一直被其他事(Cross Fire)耽误了,没时间总结一下,今天就结合我们适配的经验来填一下坑。
问题一:项目换到iOS 11的环境下,点击页面按钮出现crash现象
1,在加班无数个夜晚后,终于知道原因了。一句话,就是不在主线程中修改了UI导致crash。
本来Xcode9 是可以提示这种错误的,
但是有的比较隐晦的地方,它必须到运行时才能发现。而且不能定位到具体地方。在UINavigationBar的类别中,修改状态栏的颜色和一些通配属性,添加的方法没有放到主线程中(系统会这样认为的),当点击按钮时,push到下一个ViewController
时,就会调用 UINavigationBar的类别
然后crash。
//在UINavigationBar的类别中,修改状态栏的颜色和一些通配属性,添加的方法没有放到主线程中(系统会这样认为的)if (!self.overlay) { [self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self setShadowImage:[UIImage new]]; self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, 20)]; self.overlay.userInteractionEnabled = NO; self.overlay.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; [self insertSubview:self.overlay atIndex:0]; } self.overlay.backgroundColor = backgroundColor; [self setBackgroundColor:backgroundColor];
但是会有错误信息
=================================================================Main Thread Checker: UI API called on a background thread: -[UIView init]PID: 3735, TID: 1583390, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 21Backtrace:4 TestIOS11 0x00000001032d25dd __29-[ViewController viewDidLoad]_block_invoke + 455 libdispatch.dylib 0x0000000107bdd3f7 _dispatch_call_block_and_release + 12
解决办法:把修改UI的代码放回主线程。
dispatch_async(dispatch_get_main_queue(), ^{ // 把addSubview,insertSubview,放到这里 });
阅读全文
0 0
- iOS11适配点击按钮崩溃
- ios11按钮点击不响应.
- ios11崩溃
- JCVideoPlayerStandard点击全屏按钮崩溃
- iOS11新特性,如何适配iOS11
- iOS11新特性,如何适配iOS11
- iOS11返回按钮和导航栏右按钮的完美适配
- ios11导航栏按钮不适配解决方法
- ios11截图崩溃
- iPad点击按钮弹出alert对话框崩溃
- ios按钮点击导致程序崩溃
- 云信点击语音按钮就崩溃
- 完美适配 iOS11
- iOS11项目适配 UIScorllView下移和导航栏返回按钮偏移
- iOS11 导航栏按钮出现点击触发不灵敏(触发面积变小)
- IOS11界面适配问题
- iOS11版本适配问题
- iOS11 安全区域适配
- Springboot mail邮件服务功能学习
- 纪念刚毕业的自己
- javaEE之概括
- sourcetree 忽略文件夹
- 二叉树的中序线索化
- iOS11适配点击按钮崩溃
- 49-多态的概念和意义
- HTML
- 论刚入门的菜鸟如何学网络安全,如何学习渗透测试,网络安全菜鸟的学习之旅
- java.security.cert.CertificateException: Issuer class type invalid or Subject class type in valid
- android屏幕适配,自动生成不同的dimens.xml详解
- sql Sever的存储过程转换为mysql的
- Docker-4.安装Docker
- Xftp连接阿里云服务器失败