1. 程式人生 > >適配iPhoneX常用的巨集定義及方法

適配iPhoneX常用的巨集定義及方法

過了好久,今天終於有時間總結一下適配iPhone X相關的坑,總的來說有兩類坑,一個是導航欄+狀態列的高度發生了變化,一個是一些沒有實現實現-tableView: viewForHeaderInSection:和-tableView: viewForFooterInSection:等代理方法的UITableView會出錯位的問題。

1283539-1f9e771f3c5134b1.png

1. 判斷是否iPhone X:返回YES或NO

1.1 判斷:巨集

(1)依據螢幕解析度

  • 三目運演算法

1 2 //是否iPhoneX YES:iPhoneX螢幕 NO:傳統螢幕
#define kIs_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(11252436), [[UIScreen mainScreen] currentMode].size) : NO)
  • 多行邏輯判斷

1 2 3 4 5 6 7 8 9 10 11 12 13 14 //是否iPhoneX 1:iPhoneX螢幕 0:傳統螢幕
#define kIs_iPhoneX_test ({\ int tmp = 0;\ if ([UIScreen instancesRespondToSelector:@selector(currentMode)]) {\ if (CGSizeEqualToSize(CGSizeMake(11252436), [[UIScreen mainScreen] currentMode].size)) {\ tmp = 1;\ }else{\ tmp = 0;\ }\ }else{\ tmp = 0;\ }\ tmp;\ })
  • 其中,反斜槓\並不是註釋或者其它的無用符號,其實是多行巨集換行必須要用的標誌。

  • 最後一句tmp;\也是必須的,因為要將經過邏輯判斷得到的tmp作為該巨集的返回值。

(2)依據螢幕尺寸

1 2 3 #define kIs_iPhoneX (kSCREEN_WIDTH == 375.f && kSCREEN_HEIGHT == 812.f) #define kSCREEN_WIDTH  ([UIScreen mainScreen].bounds.size.width) #define kSCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

1.2 判斷:方法

  • 方法:依據裝置型號

相關推薦

iPhoneX常用巨集定義方法

過了好久,今天終於有時間總結一下適配iPhone X相關的坑,總的來說有兩類坑,一個是導航欄+狀態列的高度發生了變化,一個是一些沒有實現實現-tableView: viewForHeaderInSection:和-tableView: viewForFooterInS

iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 螢幕尺寸安全區域

此篇文章是對上一篇文章(http://www.ifiero.com/index.php/archives/611)的進一步補充,主要說明如何適配Apple的最新三款手機iPhoneXs、iPhoneXs Max及iPhoneXr !!! 未適配前:Ball球超過螢幕的上下方 適配後:B

cordova 使用WKWebView iphoneX解決不能撥打電話問題

先安裝外掛 cordova-plugin-wkwebview-engine 然後修改外掛中CDVWKWebViewEngine.m檔案,下面是全部程式碼,修改部分已經進行註釋     /* Licensed to the A

Nsis 巨集定義呼叫方法

2014年10月22日 14:37:40 xiliang_pan 閱讀數:1769 個人分類: Nsis

列表的定義方法

個數 lan nbsp 插入 刪除元素 mov log 指定 查詢 追加元素--append/extend,先看方法的說明 先看下實例理解兩個方法的區別 再看一個字符串的可能更好理解 插入元素,插入元素在指定的索引前面 查詢元素 查找元素

原生webview中使用沈浸狀態欄,H5頁面iphoneX頂部

screen log kit media ati col 頂部 否則 適配 @media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-

舉例MyBatis的常用的API方法

cto .sql 根據 actor sql sql語句 factor batis mybatis框架   在使用MyBatis框架是,主要涉及以下幾個API:   1.SqlSessionFactoryBuilder該對象根據MyBatis配置文件SqlMapConfig.

常用 Math 屬性方法

之間 mat blank sqrt rand round .com () floor Math 對象 Math.PI π 3.141592653589793 Math.ceil(‘2.5‘) Math.ceil(2.1) 向上取整

H5網頁 iPhoneX,就是這麽簡單(轉)

探索 ext 瀏覽器 ice 體驗 設值 fit viwe string iPhoneX 取消了物理按鍵,改成底部小黑條,這一改動導致網頁出現了比較尷尬的屏幕適配問題。對於網頁而言,頂部(劉海部位)的適配問題瀏覽器已經做了處理,所以我們只需要關註底部與小黑條的適配問題即可(

H5網頁 iPhoneX,就是這麼簡單(轉)

iPhoneX 取消了物理按鍵,改成底部小黑條,這一改動導致網頁出現了比較尷尬的螢幕適配問題。對於網頁而言,頂部(劉海部位)的適配問題瀏覽器已經做了處理,所以我們只需要關注底部與小黑條的適配問題即可(即常見的吸底導航、返回頂部等各種相對底部 fixed 定位的元素)。筆者通過查閱了一些官方文件,以及結合實際專

iPhoneX全屏

cal 可選值 1.0 init 包含 width initial -s cover <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"&g

Python3常用資料結構方法介紹(三)——字串

三.字串 特點:不可更改 1.基本操作(同其他序列) ①索引 >>> 'python'[2] 't' ②分片 >>> 'beauty'[0:2] 'be' >>> 'beauty'[::2] 'bat' ③相加/相乘

Python3常用資料結構方法介紹(二)——元組

二.元組 tuple 1特點: ①元組不可更改 ②圓括號 ③可重新賦值 >>> tuple0=(1,2,3) >>> tuple0=(2,3,4,1) >>> tuple0 (2, 3, 4, 1) 2常用元組操作(與列表類

Python3常用資料結構方法介紹(一)——列表

一.列表 list 1特點: ①列表可更改 ②方括號 [1, 2, 3] 2常用列表操作: ①索引: >>> list1 = [1,2,3,4,5,6,7,8,9,10] >>> list1[4] 5 ②分片: >>>

iOS APP啟動圖片iPhoneX

iOS專案的新增啟動圖片有三種方式: (1) 放到工程 Images.xcassets 資料夾下的中的【LaunchImage】圖片集合中。 (2) 放到工程下的普通資料夾中。 (3) 在LanunchScreen.xib中設定啟動圖片 詳解介紹方式

React Nativeiphonex的方案

隨著iPhoneX的誕生,UI上也發生了一系列變化。 1、iOS11前導航欄的高度是64,其中狀態列(StatusBar)的高度為20。iPhoneX的狀態列(StatusBar)高度變為了44(感測器區域高度)。 2、iPhoneX的底部增加了虛擬Home區,由於安

在visual studio工程設定中增加巨集定義方法

1. 應用:dll生成工程中匯出標頭檔案中有如下定義: #ifdef VIDEO_QUALITY_DIAGNOSIS_EXPORTING #define VQD_INTERFACE _declspec(dllexport) #else #define VQD_INTE

node中的常用核心模組方法

  常用的5個核心模組 http url querystring fs events 1. http http.createServer 建立伺服器, 回撥函式中有2個引數 1、req:reque

H5網頁 iPhoneX,就是這麼簡單

  iPhoneX 取消了物理按鍵,改成底部小黑條,這一改動導致網頁出現了比較尷尬的螢幕適配問題。對於網頁而言,頂部(劉海部位)的適配問題瀏覽器已經做了處理,所以我們只需要關注底部與小黑條的適配問題即可(即常見的吸底導航、返回頂部等各種相對底部 fixed 定位的元素)。筆者通過查閱了一些官方文件,以及結合實

C常用巨集定義!!!

01: 防止一個頭檔案被重複包含 #ifndef COMDEF_H #define COMDEF_H //標頭檔案內容 #endif02: 重新定義一些型別,防止由於各種平臺和編譯器的不同,而產生的型別位元組數差異,方便移植。 typedef  unsigned char