这篇文章主要介绍了支持Xcode10和适配iPhone XS Max、iPhone XR的方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

目前的项目已做了Xcode10(swift4.0)和新机型的适配,总结一下遇到的问题和修改的内容,希望帮助到其他人,如果有不同的看法或遗漏,欢迎指出!

1.第三方库编译报错

如果项目里用到了Mixpanel-swift和SwiftLint,这两个在Xcode10上会报错,目前作者已提交新版本分别是2.4.5和0.27.0,更新后即可解决报错。

2.library not found for - lstdc++.6.0.9

pod工程编译通过后会进行主工程的编译,如果依赖了libstdc++.tbd和libstdc++.6.0.9.tbd,就会报这个error,原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是libstdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。

临时的解决方法就是把libstdc++.6.0.9.tbd这个文件导入到Xcode10中,分别放到以下目录 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/ 和 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/ 这时编译可以通过。

但这只是临时的解决方案,如果你自己的业务模块使用了libstdc++,那么就把模块代码重新调整为依赖libc++,然后重新检查是否存在问题,重新编译。如果你引用的第三方厂商提供的sdk中依赖了libstdc++,那么抓紧联系厂商,要求版本升级。

3.Enum case ‘…’ not found in type ‘…’

解决好上面两个报错,编译程序时还会显示这个error,具体场景如下:

PosVisitQuestionType: String {case textcase textArea = "text_area"case dropDownList = "drop_down_list"case radioButton = "radio_button"
}
let type: PosVisitQuestionType!
...
switch type {
case .text, .textArea:errorText = NSLocalizedString("Please enter the following options", comment: "")
case .dropDownList, .radioButton:errorText = NSLocalizedString("Click the right button to get current location", comment: "")
default:break
}

Xcode10建议每个case 情况下加“?”

原因可能是 type是可选的,所以每个case情况要与type类型保持一致,所以提示加 “?”,可能是Xcode10编译器更新的原因。

修改的方法是如果确定type会被赋值,那在定义的时候就把“!”去掉,如果不确定type是否有值就按照Xcode提示修改。

4.适配iPhone XS Max、iPhone XR

我们项目在获取机型等信息用的是DeviceKit这个第三方库,所以也需要更新一下才能获取到新机型的信息,最新版是1.8.1。在最新版有这样一个变量

/// All Face ID Capable Devicesstatic public var allFaceIDCapableDevices: [Device] {return [.iPhoneX, .iPhoneXs, .iPhoneXsMax, .iPhoneXr]}

由于iPhone X、iPhone XS、iPhone XS Max、iPhone XR这些机型的navigationBar高度以及tabBar高度都一致,所以可以用allFaceIDCapableDevices是否包含当前设备,来判断当前设备是否有“齐刘海”。

示例:

static let faceIDDeviceArray = Device.allFaceIDCapableDevicesstatic let navigationHeight: CGFloat = {if faceIDDeviceArray.contains(currentDevice) {return faceIDDeviceNavHeight} else {return ordinaryDeviceNavHeight}}()

同时DeviceKit中也提供这样一个方法,运行模拟器的时候调用,也会返回真实的设备名称

/// Get the real device from a device. If the device is a an iPhone8Plus simulator this function returns .iPhone8Plus (the real device)./// If the parameter is a real device, this function returns just that passed parameter.////// - parameter device: A device.////// - returns: the underlying device If the `device` is a `simulator`,/// otherwise return the `device`.public static func realDevice(from device: DeviceKit.Device) -> DeviceKit.Device

示例:

static let currentDevice = Device.realDevice(from: Device())
if currentDevice == .iPhoneX {}
// 取代以下写法
if Device() == .iPhoneX || Device() == .simulator(.iPhoneX) {}

最后别忘了再切两张启动图,因为iPhone XS和尺寸和iPhone X是一样的,所以iPhone XS可以忽略

iPhone XR:828px x 1792px

iPhone XS Max: 1242px x 2688px

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家具有一定的参考学习价值,同时欢迎大家进入小编交流群:624212887,一起交流学习,谢谢大家的支持(原文地址:https://www.jianshu.com/p/24920e577e07)

支持Xcode10和适配iPhone XS Max、iPhone XR的方法相关推荐

  1. iPhone XS Max(xr)进入DFU模式的方法

    iPhone XS Max iPhone xr等都一样啊(不用绿盟小编都说一遍吧,还有xs),进入DFU模式的方法如下: 1,先用把手机通过Lightning转USB传输线连电脑: 2,打开电脑的iT ...

  2. iOS【开发适配iPhone XS, iPhone XS Max, iPhone XR】

    官方适配视频: Building Apps for iPhone XS, iPhone XS Max, and iPhone XR. 原视频连接 https://developer.apple.com ...

  3. App Store Connect 上传app时,屏幕快照尺寸5.8-Inch,6.5-Inch,iPhone XS,iPhone XS Max, iPhone XR

    原文地址 https://help.apple.com/app-store-connect/#/devd274dd925

  4. 移动端适配iphoneX、iPhone XS、iPhone XS Max、iPhone XR方法

    使用mui框架的底部tab栏打包后在iphoneX.iPhone XS.iPhone XS Max.iPhone XR上展示出现问题,底部会被遮挡大半. 效果如下图: 解决方案:获取屏幕大小来写不同的 ...

  5. iphone xr xs_等等,是iPhone“ XS”还是iPhone“ Xs”?

    iphone xr xs Apple just announced a trio of new phones with pretty silly names. On top of being kind ...

  6. iOS 【适配iPhone XR/iPhone XS Max】

    启动图 iPhone XR:828px x 1792px iPhone XS Max: 1242px x 2688px LaunchImage中只有iPhone X/iPhone XS 项目中使用La ...

  7. iPhone X,iPhone XS,iPhone XR,iPHone XS Max 适配(只说实现,不BB)

    今天凌晨苹果新发布了三款手机,分别是iPhone XS,iPhone XR,iPhone XS Max,其中iPhone XS的屏幕尺寸和iPhone X的是一致的,另外两款都有了新的尺寸,具体尺寸如 ...

  8. 5G即将普及,iphone XS、XS Max、XR支持吗?

    5G牌照已经发放了,在不久的将来即将普及,有很多小伙伴就会很疑惑,自己手里的iPhone手机能不能支持5G?或者即将购买iPhone系列的小伙伴都在纠结要不要购买?小编今天就来为大家解释解释. 01 ...

  9. css适配iPhoneX,iPhone XS Max,iPhoneXR,

    一般情况下iPhoneX适配方法有三种 1.viewport-fit:contain <meta name="viewport" content="width=de ...

最新文章

  1. [PHPUnit]自动生成PHPUnit测试骨架脚本-提供您的开发效率【2015升级版】
  2. 多多点金——青龙羊毛
  3. 微信小程序-页面跳转传值
  4. LeetCode上求两个排序数组中位数问题—— Median of Two Sorted Arrays
  5. 【Python面试】 说说Python中有几种数据类型?​
  6. window7不要光盘修复计算机,Win7若崩溃了就靠它——Win7系统修复光盘制作方法解析...
  7. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1105:数组逆序重存放
  8. 电脑键盘练习_用键盘打字怎样才能练得快,有什么窍门没?
  9. 表单html遇到的问题及处理,Html表单中遇到的问题
  10. Process相关函数
  11. InfoPath参与流程的开发[转帖]
  12. 为资产分类定义折旧范围_SAP FICO零基础学习_0006_资产-概述和基本配置
  13. 基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布
  14. android 版本选择,谷歌服务框架版本如何选择 我该下载哪个版本解析
  15. Windows的AppData 文件夹
  16. 厉害!他33岁破格晋升教授和博导,成果还打破国外技术垄断
  17. 大道至简:数据库的终极未来
  18. 华硕ezflash3找不到u盘_通过华硕BIOS Tools - EZ Flash 2 更新主板BIOS
  19. python 节假日_python判断工作日,节假日
  20. AVFoundation

热门文章

  1. 高数不定积分——组合积分法(可用于一些竞赛难度的三角函数不定积分题)
  2. 关于C语言用问号表达式(正则表达式)输入三个数求最大数的问题
  3. Virtual Judge-4099:队列和栈
  4. 【LorMe云讲堂】戴磊:宿主共生微生物组的精准表征与靶向改造
  5. 复数的四则运算(C语言实现)
  6. New Online Judge 1022排队
  7. 带通采样定理及其公式推导
  8. IC验证培训——解读《多线程向量处理器验证技术的研究》
  9. 云呐|固定资产应该如何管理?固定资产应该怎么管理?
  10. win7和linux系统的区别,Linux操作系统 和WIN7系统 的特点