一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - IOS - 支持Xcode10和適配iPhone XS Max、iPhone XR的方法

支持Xcode10和適配iPhone XS Max、iPhone XR的方法

2021-05-13 17:19Mister_H IOS

這篇文章主要介紹了支持Xcode10和適配iPhone XS Max、iPhone XR的方法,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文介紹了支持xcode10和適配iphone xs max、iphone xr的方法,分享給大家,具體如下,

支持Xcode10和適配iPhone XS Max、iPhone XR的方法

目前我們項目已做了xcode10(swift4.0)和新機(jī)型的適配,總結(jié)一下遇到的問題和修改的內(nèi)容,希望幫助到其他人,如果您有不同的看法或遺漏,歡迎指出!

1.第三方庫編譯報錯

如果項目里用到了mixpanel-swift和swiftlint,這兩個在xcode10上會報錯,目前作者已提交新版本分別是2.4.5和0.27.0,更新后即可解決報錯。

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

pod工程編譯通過后會進(jìn)行主工程的編譯,如果依賴了libstdc++.tbd和libstdc++.6.0.9.tbd,就會報這個error,原因是蘋果在xcode10和ios12中移除了libstdc++這個庫,由libc++這個庫取而代之,蘋果的解釋是libstdc++已經(jīng)標(biāo)記為廢棄有5年了,建議大家使用經(jīng)過了llvm優(yōu)化過并且全面支持c++11的libc++庫。

臨時的解決方法就是把libstdc++.6.0.9.tbd這個文件導(dǎo)入到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/  這時編譯可以通過。

但這只是臨時的解決方案,如果你自己的業(yè)務(wù)模塊使用了libstdc++,那么就把模塊代碼重新調(diào)整為依賴libc++,然后重新檢查是否存在問題,重新編譯。如果你引用的第三方廠商提供的sdk中依賴了libstdc++,那么抓緊聯(lián)系廠商,要求版本升級。

3.enum case '...' not found in type '...'

解決好上面兩個報錯,編譯程序時還會顯示這個error,具體場景如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
posvisitquestiontype: string {
  case text
  case 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 情況下加“?”

支持Xcode10和適配iPhone XS Max、iPhone XR的方法

原因可能是 type是可選的,所以每個case情況要與type類型保持一致,所以提示加 “?”,可能是xcode10編譯器更新的原因。

修改的方法是如果確定type會被賦值,那在定義的時候就把“!”去掉,如果不確定type是否有值就按照xcode提示修改。

4.適配iphone xs max、iphone xr

我們項目在獲取機(jī)型等信息用的是devicekit這個第三方庫,所以也需要更新一下才能獲取到新機(jī)型的信息,最新版是1.8.1。在最新版有這樣一個變量

?
1
2
3
4
/// all face id capable devices
  static public var allfaceidcapabledevices: [device] {
   return [.iphonex, .iphonexs, .iphonexsmax, .iphonexr]
  }

由于iphone x、iphone xs、iphone xs max、iphone xr這些機(jī)型的navigationbar高度以及tabbar高度都一致,所以可以用allfaceidcapabledevices是否包含當(dāng)前設(shè)備,來判斷當(dāng)前設(shè)備是否有“齊劉海”。

示例:

?
1
2
3
4
5
6
7
8
9
static let faceiddevicearray = device.allfaceidcapabledevices
 
static let navigationheight: cgfloat = {
    if faceiddevicearray.contains(currentdevice) {
      return faceiddevicenavheight
    } else {
      return ordinarydevicenavheight
    }
  }()

同時devicekit中也提供這樣一個方法,運行模擬器的時候調(diào)用,也會返回真實的設(shè)備名稱

?
1
2
3
4
5
6
7
8
/// 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

示例:

?
1
2
3
4
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

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

原文鏈接:https://www.jianshu.com/p/24920e577e07

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区二区三区免费高 | 好大用力深一点女公交车 | 精品综合在线 | 男人捅女人动漫 | 毛茸茸的大逼 | 欧美色成人tv在线播放 | 国产一级一级一级成人毛片 | 奇米精品 | 性派对xxxhd| 国产精品亚洲w码日韩中文 国产精品香蕉在线观看不卡 | 亚洲免费色 | 欧美一级特黄刺激大片视频 | 日日操综合 | 古代翁熄乩伦小说h | 日韩免费一级 | 亚州日韩精品AV片无码中文 | 天堂成人在线视频 | 亚洲国产情侣偷自在线二页 | 91国内精品线免费播放 | 逼逼流水了 | 亚洲免费大全 | 乖女的嫩奶水h文孕妇 | 女人张开腿 让男人桶个爽 免费观看 | 精灵之森高清在线 | 国产精品久久国产三级国电话系列 | 国产精品区一区二区免费 | tobu8在线观看免费高清 | 国内自拍网红在综合图区 | 网站色小妹| 日本 片 成人 在线 日b视频免费 | 日韩网站在线观看 | 精品亚洲国产一区二区 | 精品在线小视频 | 精品国产香蕉 | 国产一级黄毛片 | 日韩国产成人精品视频人 | 99视频都是精品热在线播放 | 555www成人网 | 亚洲国产精品成人午夜在线观看 | 国产精品秒播无毒不卡 | 国产一区二区三区在线观看视频 |