最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年09月18日 11:41:03   作者:TUALATRIX  
近日,iPhone X的發(fā)布在人們?nèi)罕娨鹆撕艽蟮霓Z動,下面這篇文章主要給大家介紹了關(guān)于利用Swift如何判斷iPhone X機型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

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

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

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

奇點在 iPhone X 的 break

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

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

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

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

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

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

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

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

    return false
  }
}

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

小結(jié)

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Swift實現(xiàn)表格視圖單元格多選

    Swift實現(xiàn)表格視圖單元格多選

    這篇文章主要為大家詳細(xì)介紹了Swift實現(xiàn)表格視圖單元格多選,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • R.swift的使用與安裝教程

    R.swift的使用與安裝教程

    這篇文章主要給大家介紹了關(guān)于R.swift使用與安裝的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 淺談swift 4.0中private所發(fā)生的變化

    淺談swift 4.0中private所發(fā)生的變化

    Swift 4是蘋果計劃于2017年秋季推出的最新版本,其主要重點是提供與Swift 3代碼的源兼容性,并努力實現(xiàn)ABI穩(wěn)定性。下面這篇文章主要給大家介紹了關(guān)于swift 4.0中private所發(fā)生的一些變化,需要的朋友可以參考下。
    2017-12-12
  • Swift心得筆記之運算符

    Swift心得筆記之運算符

    區(qū)別于 C 語言,在 Swift 中你可以對浮點數(shù)進(jìn)行取余運算(%),Swift 還提供了 C 語言沒有的表達(dá)兩數(shù)之間的值的區(qū)間運算符,(a..b和a...b),這方便我們表達(dá)一個區(qū)間內(nèi)的數(shù)值。
    2015-04-04
  • Swift運算符使用方法淺析

    Swift運算符使用方法淺析

    Swift 語言支持大部分標(biāo)準(zhǔn) C 語言的運算符,并且改進(jìn)了許多特性來使我們的代碼更加規(guī)范,其中主要包含算數(shù)運算符、區(qū)間運算符、邏輯運算符、關(guān)系運算符、賦值運算符、自增自減運算符、溢出運算符等
    2022-09-09
  • swift中獲取字符串前綴的七種方法總結(jié)

    swift中獲取字符串前綴的七種方法總結(jié)

    在日常的開發(fā)中,經(jīng)常會需要獲取一個字符串的前綴,在這篇文章中我總結(jié)了在 Swift 中檢查字符串前綴的多種方法分享給大家,看看有沒有你不知道的
    2023-12-12
  • 詳細(xì)講解Swift中的類型占位符

    詳細(xì)講解Swift中的類型占位符

    類型占位符是swift5.6中引?的?個新功能,在處理稍微復(fù)雜的通?類型時,它可能真的很有用,這篇文章主要給大家介紹了關(guān)于Swift類型占位符的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Swift中字典與JSON轉(zhuǎn)換的方法

    Swift中字典與JSON轉(zhuǎn)換的方法

    Swift中經(jīng)常會遇到字典和字符串的相互轉(zhuǎn)換,本篇文章主要介紹了Swift中字典與JSON轉(zhuǎn)換的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • swift中利用runtime交換方法的實現(xiàn)示例

    swift中利用runtime交換方法的實現(xiàn)示例

    這篇文章主要給大家介紹了關(guān)于swift中利用runtime交換方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-05-05
  • swift3.0指紋解鎖的實現(xiàn)方法

    swift3.0指紋解鎖的實現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了swift3.0指紋解鎖的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

沅江市| 崇左市| 三亚市| 榆林市| 湖南省| 昆山市| 玉门市| 休宁县| 金阳县| 长海县| 孙吴县| 绵阳市| 闸北区| 醴陵市| 宁陵县| 河间市| 招远市| 千阳县| 浮山县| 新民市| 辛集市| 建瓯市| 洪湖市| 呈贡县| 罗平县| 黄石市| 鄢陵县| 兰溪市| 三河市| 会理县| 白沙| 宜黄县| 大姚县| 龙口市| 达拉特旗| 宝山区| 开阳县| 社会| 麟游县| 政和县| 乐陵市|