iOS12适配问题

1.StatusBar内部结构改变

现象:crash
crash log:
-[_UIStatusBarIdentifier isEqualToString:]: unrecognized selector sent to instance 0x283452820
* Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[_UIStatusBarIdentifier isEqualToString:]: unrecognized selector sent to instance 0x283452820’
问题代码和解决方法

---------------------
+ (NSString *)getIphoneXNetWorkStates {
UIApplication *app = [UIApplication sharedApplication];
id statusBar = [[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"statusBar"];
id one = [statusBar valueForKeyPath:@"regions"];
id two = [one valueForKeyPath:@"trailing"];
NSArray *three = [two valueForKeyPath:@"displayItems"];
NSString *state = @"无网络";
for (UIView *view in three) {
//alert: iOS12.0 情况下identifier的变成了类"_UIStatusBarIdentifier"而不是NSString,所以会在调用“isEqualToString”方法时发生crash,
//修改前
// NSString *identifier = [view valueForKeyPath:@"identifier"];
//修改后
NSString *identifier = [[view valueForKeyPath:@"identifier"] description];
if ([identifier isEqualToString:@"_UIStatusBarWifiItem.signalStrengthDisplayIdentifier"]) {
id item = [view valueForKeyPath:@"_item"]; //alert: 这个问题和上边一样itemId是_UIStatusBarIdentifier 类型,不是string
NSString *itemId = [[item valueForKeyPath:@"identifier"] description];
if ([itemId isEqualToString:@"_UIStatusBarWifiItem"]) {
state = @"WIFI";
}
state = @"不确定"; } else if ([identifier isEqualToString:@"_UIStatusBarCellularItem.typeDisplayIdentifier"]) {
UIView *statusBarStringView = [view valueForKeyPath:@"_view"];
// 4G/3G/E
state = [statusBarStringView valueForKeyPath:@"text"];
}
}
return state;
}

2.libstdc++ 库 和 libc++

原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是lib转载自斗玩网stdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。

解决方案:,如果你自己的业务模块使用了libstdc++,那么就把模块代码重新调整为依赖libc++,然后重新检查是否存在问题,重新编译,如果项目需要C++,则再添加libc++.tbd

2、报错如下:

error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.

                   Embedded Binary Signing Certificate: Software Signing

                  Parent App Signing Certificate: - (Ad Hoc Code Signed)

3、报错如下:

error: Multiple commands produce 'xxxx':

1) Target 'xxxModule' (project 'Pods') has copy command from 'xxxx' to 'yyyy'

2) Target 'xxxModule' (project 'Pods') has copy command from 'zzzz' to 'pppp'

这里2、3都是xcode对工程配置强校验引起的,很棘手,找了很久才基本解决掉,解决方法是一致的,在 Xcode--->File下进行工程设置,如下图(project setting或workspace setting):

这里相当于是将xcode build的设置修改为原来的配置了。如何在新的build 系统下解决这些问题,还待进一步研究。

iPhoneXR,iPhoneXS,iPhoneXS MAX适配

1.各种机型的判断方法:

  • 各个机型枚举
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhoneXR ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhoneXS_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO)

  • 目前iPhonex都是刘海屏,判断处这个特性,就可以统一做适配了

  • #define isIPhoneXAll ([UIScreen mainScreen].bounds.size.height == 812 || [UIScreen mainScreen].bounds.size.height == 896)
  • 目前iPhonex都是刘海屏,状态栏的高度均为44pt

#define isIPhoneXAl ([[UIApplication sharedApplication] statusBarFrame].size.height == 44)

针对继承自UIScrollView的,需要处理一下内边距 第一步:关闭自动调整内边距

 if (@available(iOS 11.0, *)) {
        [UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}

iOS适配整理的更多相关文章

  1. Masonry记录——iOS适配

    Masonry是iOS适配的第三方库,比较好用的一个,本人用的也不多,简单了解一些常用的方法,自己学习中,记录下来共勉. Masonry下载地址:https://github.com/SnapKit/ ...

  2. iOS资源整理

    开发类库 http://www.code4app.com/thread-7831-1-1.html Github-iOS备忘 http://github.ibireme.com/github/list ...

  3. 【UWP】UI适配整理

    做UWP有几个月了,期间发布了几个应用,在这里整理一下适配相关的一些东西,UWP关于UI的适配主要有两种方式: 1.VisualState+Trigger:通过触发器出发界面更变,通常在Desktop ...

  4. iOS 适配iOS9

    1.网络接口不支持https协议,在iOS9下 在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据. 解决方案(以下方法2选1): (1)暂时退回到http协议 ...

  5. iOS - iOS 适配

    前言 什么是适配: 适应.兼容各种不同的情况. iOS 开发中,适配的常见种类: 1)系统适配, 针对不同版本的操作系统进行适配. 2)屏幕适配,针对不同大小的屏幕尺寸进行适配. iPhone 的尺寸 ...

  6. iOS适配:Masonry介绍与使用实践:快速上手Autolayout

    随着iPhone的手机版本越来越多, 那么对于我们广大的开发者来说就是很悲催,之前一直使用代码里面layout的约束来适配, 现在推荐一个第三方Masonry,上手块,操作简单,只能一个字形容他 “爽 ...

  7. < IOS > IOS适配,简单的分析解决一下

    版权:张英堂 欢迎转载,转载请注明出处. 做的项目很多,一到适配的时候头就大了,IOS6,7的适配,屏幕的适配,当然还有下一步要出4.7屏幕,也要做适配....悲剧的移动端的人员. 怎么做一个通用的适 ...

  8. iOS Socket 整理以及CocoaAsyncSocket、SRWebSocket源码解析(一)

    写在准备动手的时候: Socket通讯在iOS中也是很常见,自己最近也一直在学习Telegram这个开源项目,Telegram就是在Socket的基础上做的即时通讯,这个相信了解这个开源项目的也都知道 ...

  9. ios 适配iOS11&iPhoneX的一些坑

    前阵子项目开发忙成狗,就一直没做iOS11的适配,直到XcodeGM版发布后,我胸有成竹的在iPhoneX上跑起项目,整个人都凉透了...下面总结一下我遇到的坑,不是很全面,日后补充. 导航栏 导航栏 ...

随机推荐

  1. vCard

    vCard 在翻阅dottoro的时候,在附录(appendix)的js部分,注意到一个叫vCard的部分,能单独列出来,可能是比较重要的,至少是比较独立的部分,但是以前从未听说或者了解过这一部分,如 ...

  2. 字节、字、bit、byte的关系[转]

    字 word 字节 byte 位 bit 字长是指字的长度 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit)  一个字的字长为16 一个字节的字长是8 bps ...

  3. SSH Secure Shell 无法登录:server responded "algorithm negotiation failed”

    SSH Secure Shell Client 连接 ubuntu系统报错 修改ssh的配置文件 /etc/ssh/sshd_config在配置文件中添加: Ciphers aes128-cbc,ae ...

  4. 区块链开发(五)git、truffle安装

    truffle是以太坊最受欢迎的一个开发框架,本篇博客介绍truffle的下载安装过程. git安装 在安装truffle之前需要核实一下本机是否安装git程序.后面的程序安装需要依赖git. 输入以 ...

  5. hdu 1227(动态规划)

    Fast Food Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  6. 【转】C#获取当前程序运行路径的方法集合

    //获取当前进程的完整路径,包含文件名(进程名).string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (. ...

  7. 实例教程:1小时学会Python(转)

    1 序言 面向读者 本文适合有经验的程序员尽快进入Python2.x世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的Python程序. Pyt ...

  8. flutter 国内镜像设置

    官网:https://flutter.dev/community/china 路径设置 FLUTTER_STORAGE_BASE_URL: https://mirrors.sjtug.sjtu.edu ...

  9. 洛谷——P2128 赤壁之战

    P2128 赤壁之战 题目描述 赤壁之战,黄盖率舰满载薪草膏油诈降曹军. 受庞统所授的连环计,曹军战船之间由铁索相连,没有两艘战船在同一位置,也没有铁索两两相交或穿过战船.每艘船都有其一定的战略价值. ...

  10. 【DFS序】【莫队算法】【权值分块】bzoj1803 Spoj1487 Query on a tree III

    基本等同这个,只是询问的东西不大一样而已. http://www.cnblogs.com/autsky-jadek/p/4159897.html #include<cstdio> #inc ...