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

適配iPhoneXS max和iPhoneX R的方法示例

 更新時間:2018年10月01日 12:06:14   作者:zolobdz  
這篇文章主要介紹了適配iPhoneXS max和iPhoneX R的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

9.18更新:經(jīng)測試發(fā)現(xiàn)iOS12修改了非劉海屏safeArea的值! 拿iPhone6豎屏情況下為例iOS11中返回的safeAreaInsets為(0,0,0,0);iOS12中返回的safeAreaInsets為(20,0,0,0);是的這個top-20是狀態(tài)欄。這里大家要注意下,不應(yīng)該盲目使用safeAreaInsets,而是使用我下面類似的判斷劉海屏的方法來區(qū)分劉海屏后再決定是否使用safeAreaInsets;

今年的三款新手機(jī)已經(jīng)發(fā)布,加上Xcode10已經(jīng)發(fā)布GM Seed版本,也可以使用模擬器對新機(jī)進(jìn)行適配,所以趕緊開始吧!

三款手機(jī)的屏幕大小

圖片官網(wǎng)地址

上面是像素單位,然后我們找到對應(yīng)的倍數(shù),換算成-點pt;

圖片官網(wǎng)地址

最后得到:

iPhone XS 375812pt*

iPhone XR 414896pt*

iPhone X 414896pt*

總結(jié)一下,因為X已經(jīng)都是陪過了XS基本上就是忽略不管了,而新出的XR和XS Max雖然屏幕像素不同(一個LCD屏幕一個OLED屏幕)所以一個2x一個3x最終得到的pt大小是一樣的(這里可以看出蘋果果然沒白給你便宜)。加上iOS11開始引入了safeAreaInsets,如果之前使用了這個屬性,我們幾乎不需要對項目中的頁面做調(diào)整,那么最后只剩下一部要做 添加兩個尺寸的啟動圖。

添加啟動圖

為什么要添加啟動圖?

當(dāng)我們在XR的模擬器直接跑之前的老項目(已經(jīng)適配過iPhoneX),做如下打印,你會發(fā)現(xiàn):


WTF?難道是Xcode10的bug?再試試XS Max我相信你會得到一樣的結(jié)果。

這里解釋下。你是否還記得iPhoneX剛出來的時候跑沒有適配過的項目,會導(dǎo)致app打開屏幕上下各有幾十像素的黑屏?原因是因為沒有假如iPhoneX的啟動頁!同理我們需要先引入啟動頁。

圖片官網(wǎng)地址

這是啟動圖尺寸,直接照著像素單位切圖即可。

需要注意的是,當(dāng)你的老項目用Xcode10打開后,打開Images.xcassets文件夾,再到LaunchImage文件夾下時,找不到以上兩個新機(jī)型的占位框,最簡單的辦法就是右鍵添加一個新的LaunchImage,然后刪除老的LaunchImage,記得新建的文件夾要改名LaunchImage哦。


新建的LaunchImage會出現(xiàn)兩個新機(jī)型的占位框:

啟動頁添之后,再做打印,就會的到正確的屏幕尺寸了!


頁面適配

由于從iOS11開始引入了safeAreaInsets這個應(yīng)該是老話題了,所以這里稍微提供下我自己的心得吧。

頁面是陪經(jīng)常要寫個中判斷,代碼中時常需要用到safeAreaInsets或者判斷劉海屏等工具,所以我習(xí)慣在項目中寫一個UIManager的單例,這里面除了提供一些適配需要的屬性,還可以寫一下tableView適配等。

@interface DDUIManager : NSObject

@property (nonatomic, assign, readonly) UIEdgeInsets safeAreaInset;
/*
 * 是否是劉海屏
 * */
@property (nonatomic, assign, readonly) BOOL isHairHead;

+ (instancetype)sharedManager;

@end
@implementation DDUIManager

- (UIWindow *)keyWindow {
  return [UIApplication sharedApplication].keyWindow;
}

- (UIEdgeInsets)safeAreaInset {
  if (@available(iOS 11.0, *)) {
    if (self.keyWindow) {
      return self.keyWindow.safeAreaInsets;
    }
  }
  return UIEdgeInsetsZero;
}

- (BOOL)isHairHead {
  if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
    return self.safeAreaInset.left > 0.0f;
  }else {
    // ios12 非劉海屏狀態(tài)欄 20.0f
    return self.safeAreaInset.top > 20.0f;
  }
}

@end

這樣寫除了使用方便以外,還避免了一部分關(guān)于系統(tǒng)的條件編譯等,因為safeAreaInset是iOS11才出的.而且在e lse中會返回UIEdgeInsetsZero,使得使用時可以省去一些if-else語句,例如:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解iOS中跨頁面狀態(tài)同步方案比較

    詳解iOS中跨頁面狀態(tài)同步方案比較

    這篇文章主要介紹了詳解iOS中跨頁面狀態(tài)同步方案比較,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • iOS MRC 下 block 循環(huán)引用問題實例講解

    iOS MRC 下 block 循環(huán)引用問題實例講解

    本文通過文字說明加代碼的形式給大家介紹了iOS MRC 下 block 循環(huán)引用問題,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-12-12
  • Swift 進(jìn)階 —— map 和 flatMap的使用

    Swift 進(jìn)階 —— map 和 flatMap的使用

    這篇文章主要介紹了Swift map和flatMap的相關(guān)資料,幫助大家更好的理解和使用Swift,感興趣的朋友可以了解下
    2020-09-09
  • 實例講解iOS音樂播放器DOUAudioStreamer用法

    實例講解iOS音樂播放器DOUAudioStreamer用法

    本篇文章給大家通過實例講解了iOS音樂播放器DOUAudioStreamer用法以及分享了實例代碼,一起學(xué)習(xí)參考下吧。
    2017-12-12
  • iOS通過shell腳本批量修改屬性

    iOS通過shell腳本批量修改屬性

    這篇文章主要給大家分享了iOS通過shell腳本批量修改屬性的相關(guān)知識點,希望我們整理的內(nèi)容能夠幫助到大家。
    2018-03-03
  • iOS逆向教程之logify跟蹤方法的調(diào)用

    iOS逆向教程之logify跟蹤方法的調(diào)用

    這篇文章主要給大家介紹了關(guān)于iOS逆向教程之logify跟蹤方法調(diào)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • IOS React等Title不顯示問題解決辦法

    IOS React等Title不顯示問題解決辦法

    這篇文章主要介紹了IOS React等Title不顯示問題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • ios7中UIViewControllerBasedStatusBarAppearance作用詳解

    ios7中UIViewControllerBasedStatusBarAppearance作用詳解

    這篇文章主要介紹了 ios7中UIViewControllerBasedStatusBarAppearance作用詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • IOS實現(xiàn)圖片輪播無限循環(huán)效果

    IOS實現(xiàn)圖片輪播無限循環(huán)效果

    這篇文章主要為大家詳細(xì)介紹了IOS實現(xiàn)圖片輪播無限循環(huán)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • IOS開發(fā)Objective-C?Runtime使用示例詳解

    IOS開發(fā)Objective-C?Runtime使用示例詳解

    這篇文章主要為大家介紹了IOS開發(fā)Objective-C?Runtime使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評論

桂林市| 灵璧县| 镇赉县| 深圳市| 太仆寺旗| 昌黎县| 淄博市| 万源市| 剑川县| 纳雍县| 元江| 潢川县| 册亨县| 新宁县| 凌源市| 湄潭县| 伊川县| 谷城县| 阿拉善盟| 凤城市| 达日县| 元阳县| 永新县| 铁岭市| 新津县| 三台县| 兴安盟| 泾川县| 眉山市| 日土县| 通海县| 蒙自县| 土默特右旗| 华亭县| 莆田市| 洛浦县| 香港 | 莱阳市| 德兴市| 高州市| 涞水县|