久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

利用Swift如何判斷iPhone X機(jī)型詳解

近日,iPhone X的發(fā)布在人們?nèi)罕娨鹆撕艽蟮霓Z動(dòng),下面這篇文章主要給大家介紹了關(guān)于利用Swift如何判斷iPhone X機(jī)型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面

前言

Apple Special Event 已經(jīng)結(jié)束,iPhone 三款新機(jī)型和技術(shù)細(xì)節(jié)也已完全暴露??梢哉f,發(fā)布會(huì)前泄漏了 95% 以上的信息,以致于發(fā)布會(huì)一點(diǎn)驚喜也沒有。

盡管 iPhone 8 實(shí)際上只是 iPhone 7s,而 iPhone X 我們也早已對(duì)它非常熟悉——特別是劉海。無論是滿意還是失望,作為 iOS 開發(fā)者的我,還是得積極的適配起這款面向未來的機(jī)型。

我將在一邊適配的過程中,一邊從技術(shù)角度更多地去理解這款機(jī)器。

奇點(diǎn)在 iPhone X 的 break

除非你的 App 全部使用了 iPhone 原生組件、AutoLayout 等等,否則我想它或多或少存在著在 iPhone X 上的兼容性問題。就拿奇點(diǎn)來說吧,早上我下載完 Xcode 9 GM,然后在 iPhone X 模擬器跑起了它,很快我就看到了 break:我自定義 TabBar 的問題。

上圖可以看到,Home Indicator 和 TabBar 幾乎混在了一塊。

那么為什么會(huì)這樣?這要和奇點(diǎn)稍微 Hack 過的 UITabBar 有關(guān)系。用過奇點(diǎn)的朋友應(yīng)該知道,奇點(diǎn)的 TabBar 是沒有文字的、純圖片的 TabBar,它的高度不是標(biāo)準(zhǔn)的 49,而是 44,我在 UITabBarController 的 viewWillLayoutSubviews 方法做了一個(gè)手動(dòng)調(diào)整布局以達(dá)到這個(gè)效果。但很明顯,這個(gè) Hack 在 iPhone X 上不起作用了。


var tabFrame = self.tabBar.frame
tabFrame.size.height = MainTabBarController.tabBarHeight
tabFrame.origin.y = self.view.frame.size.height - MainTabBarController.tabBarHeight
self.tabBar.frame = tabFrame

解決 iPhone X 上的 TabBar 問題

解決這個(gè)問題也很簡單,當(dāng)我把 Hack 的代碼注釋掉以后就工作正常了。如圖:

為保證奇點(diǎn)在 iOS 11 的其他機(jī)型上繼續(xù)工作正常,我得寫一個(gè)判斷,只在 iPhone X 上禁用這個(gè) Hack。

那么如何判斷當(dāng)前的設(shè)備是 iPhone X 呢?有好幾種辦法,可以考慮取得「iPhone 10,1」這樣的 Module Name 來判斷,也可以用屏幕分辨率的形式來判斷。我覺得要用屏幕分辨率的方式來做,因?yàn)檫@是目前為止最簡單也最不容易出錯(cuò)的。因?yàn)?iPhone X 只有一種分辨率,那就是 812pt x 375pt (@3x),且沒有任何其他設(shè)備用了一樣的分辨率,特別是高度。

于是寫了一個(gè)基于 UIDevice 的擴(kuò)展(或者其他任意方法也行):


extension UIDevice {
  public func isX() -> Bool {
    if UIScreen.main.bounds.height == 812 {
      return true
    }

    return false
  }
}

在代碼中,就可以用 UIDevice.current.isX() 來判斷是不是跑在 iPhone X 機(jī)型上,然后做一些或不做一些特殊的 Hack 了。

小結(jié)

奇點(diǎn)實(shí)際上還有各種各樣在 iPhone X(甚至只是 iOS 11)上的小問題,大問題在過去的一段時(shí)間我差不多都解決了,我想這段時(shí)間我會(huì)不斷地整理出一些技術(shù)文章來和大家分享。

總得來說,對(duì)于奇點(diǎn)這樣的微博客戶端,這次對(duì) iOS 11 的適配,改動(dòng)量非常大,以致于我有點(diǎn)不高興。比如 Social 這個(gè) Framework,Apple 居然把所有社交網(wǎng)絡(luò)帳戶分享的功能給去掉了,這使得奇點(diǎn)的「同步到 Twitter」這樣的功能不能再調(diào)用系統(tǒng)的,只能自己重寫。

另外,iOS 11 將 UINavigationBar 的自定義規(guī)范到了嚴(yán)格的程度,如果你有沒有用 AutoLayout,或者 Custom TitleView 有問題,都會(huì)有很多意想不到的問題發(fā)生。

這些問題解決后,還有 iPhone X 這樣的大問題等著我們?nèi)ミm配…

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)html5模板網(wǎng)的支持。

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)教程之類型對(duì)象Subject的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)教程之Observable的相關(guān)資料,文中詳細(xì)的給大家介紹了關(guān)于新建Observable、訂閱Observable和取消訂閱并消除內(nèi)存泄漏等相關(guān)的內(nèi)容,需要的朋友可以
RxSwift是Swift函數(shù)響應(yīng)式編程的一個(gè)開源庫,由Github的ReactiveX組織開發(fā),維護(hù)。下面這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)之基礎(chǔ)篇的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需
這篇文章主要為大家詳細(xì)介紹了Swift4.0 Array數(shù)組的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
CATransition動(dòng)畫主要在過渡時(shí)使用,比如兩個(gè)頁面層級(jí)改變的時(shí)候添加一個(gè)轉(zhuǎn)場效果。CATransition分為兩類,一類是公開的動(dòng)畫效果,一類是非公開的動(dòng)畫效果。這篇文章主要給大家介紹了
下面小編就為大家?guī)硪黄斦剆wift內(nèi)存管理中的引用計(jì)數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 国产精品美女久久久av超清 | 国产精品永久 | 操操操av | 视频一区在线播放 | 99久久婷婷国产综合精品电影 | 免费国产一区二区视频 | 日韩一 | av中文字幕在线播放 | 欧美一级免费片 | 欧美a∨ | 天天躁天天操 | 精品一区二区三区电影 | 日韩三级电影在线看 | 涩涩视频在线播放 | 午夜理伦三级理论三级在线观看 | 久久久久久久成人 | 三级视频国产 | 你懂的在线视频播放 | 黄色三级在线播放 | 国产精品视频一二三区 | 久久99网站| 久久天天躁狠狠躁夜夜躁2014 | 久久r精品 | 欧美精品乱码久久久久久按摩 | 一级片在线观看 | 国产成人精品一区二区三区在线观看 | 一区在线观看视频 | 国产精品免费在线 | 国产一区2区 | 国产精品久久久久久久久久久久久 | 91免费在线| 亚洲vs天堂 | 很黄很污的网站 | 播放一级黄色片 | 免费一级大片 | 丁香婷婷久久久综合精品国产 | 亚洲一区二区精品视频在线观看 | 三极网站 | 久久网站黄 | 视频一区 国产精品 | 99re热精品视频 |