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

利用Swift如何判斷iPhone X機型詳解

近日,iPhone X的發布在人們群眾引起了很大的轟動,下面這篇文章主要給大家介紹了關于利用Swift如何判斷iPhone X機型的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面

前言

Apple Special Event 已經結束,iPhone 三款新機型和技術細節也已完全暴露。可以說,發布會前泄漏了 95% 以上的信息,以致于發布會一點驚喜也沒有。

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

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

奇點在 iPhone X 的 break

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

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

那么為什么會這樣?這要和奇點稍微 Hack 過的 UITabBar 有關系。用過奇點的朋友應該知道,奇點的 TabBar 是沒有文字的、純圖片的 TabBar,它的高度不是標準的 49,而是 44,我在 UITabBarController 的 viewWillLayoutSubviews 方法做了一個手動調整布局以達到這個效果。但很明顯,這個 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 問題

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

為保證奇點在 iOS 11 的其他機型上繼續工作正常,我得寫一個判斷,只在 iPhone X 上禁用這個 Hack。

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

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


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

    return false
  }
}

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

小結

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

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

另外,iOS 11 將 UINavigationBar 的自定義規范到了嚴格的程度,如果你有沒有用 AutoLayout,或者 Custom TitleView 有問題,都會有很多意想不到的問題發生。

這些問題解決后,還有 iPhone X 這樣的大問題等著我們去適配…

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對html5模板網的支持。

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

相關文檔推薦

這篇文章主要給大家介紹了關于RxSwift學習教程之類型對象Subject的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關于RxSwift學習教程之Observable的相關資料,文中詳細的給大家介紹了關于新建Observable、訂閱Observable和取消訂閱并消除內存泄漏等相關的內容,需要的朋友可以
RxSwift是Swift函數響應式編程的一個開源庫,由Github的ReactiveX組織開發,維護。下面這篇文章主要給大家介紹了關于RxSwift學習之基礎篇的相關資料,文中通過示例代碼介紹的非常詳細,需
這篇文章主要為大家詳細介紹了Swift4.0 Array數組的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
CATransition動畫主要在過渡時使用,比如兩個頁面層級改變的時候添加一個轉場效果。CATransition分為兩類,一類是公開的動畫效果,一類是非公開的動畫效果。這篇文章主要給大家介紹了
下面小編就為大家帶來一篇詳談swift內存管理中的引用計數。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 久久精品一区二区 | 91精品国产综合久久福利软件 | 成人在线电影网站 | 中日av | 欧美日韩在线一区 | 91九色婷婷 | 欧美激情在线播放 | 午夜在线观看视频 | www.黄色在线观看 | 国产区高清 | www.一级毛片 | 五十女人一级毛片 | 成人在线一区二区 | av天天看 | 国产激情一区二区三区 | 欧美成年黄网站色视频 | 国产精品永久在线观看 | 九九热这里只有精品6 | 精品一区二区三区免费视频 | 成人免费视频一区二区 | 国产精品久久久久久久7777 | 观看毛片 | 免费黄视频网站 | 亚洲天堂网站 | 91精品国产综合久久久久 | 久久久久久久一区二区三区 | 亚洲精品一区二区三区四区高清 | 精品91| 99亚洲 | 成人黄色在线观看 | 国产一区三区在线 | 第一区在线观看免费国语入口 | 国产一级毛片精品完整视频版 | 成人精品一区二区户外勾搭野战 | 国产黄色在线观看 | 久久久久国产成人精品亚洲午夜 | 亚洲人成网站777色婷婷 | 国产成人麻豆免费观看 | 色综合色综合网色综合 | 欧美日韩中文字幕在线播放 | 在线免费观看黄色网址 |