幾句代碼搞定iOS屏幕適配

文章由于iPhone X,導(dǎo)致高度比例問(wèn)題,取消高度作為比例,直接用寬度比例. 近期我會(huì)抽空錄制適配教學(xué)適配,希望能幫助到大家,要相信一句話(huà),用起來(lái)越簡(jiǎn)單,可定制性就越差(不可橫屏適配,不可適配iPad,當(dāng)蘋(píng)果不按常規(guī)屏幕比例出牌,都會(huì)出問(wèn)題.)
隨著iPhoneX即將上市,本文的捷徑適配或許不再適用了,要記住,用起來(lái)最簡(jiǎn)單的,往往局限性最大的,這種並不能做橫屏適配,屏幕適配并非真正的放大縮小,我會(huì)錄制一個(gè)視頻,重新說(shuō)一下適配(基于storyboard,xib開(kāi)發(fā))

老規(guī)矩,上圖


9F61CEBF-4709-4FE0-AD15-F664874DCFAE.jpg
image.png

首先,除了iPhone4, iPhone5,6,6plus機(jī)型,都是成比例的,也就是每個(gè)屏幕的寬度/高度都是相等的,所以我們可以利用這個(gè)成比例,寫(xiě)以下代碼
/*
屏幕適配
*/

//判斷設(shè)備類(lèi)型
#define iPhone4 ([UIScreen mainScreen].bounds.size.height == 480)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size)) : NO)
#define iPhone6plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(1125, 2001), [[UIScreen mainScreen] currentMode].size) || CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size)) : NO)
// 判斷是否是iPhone X
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
// 狀態(tài)欄高度
#define STATUS_BAR_HEIGHT (iPhoneX ? 44.f : 20.f)
// 導(dǎo)航欄高度
#define NAVIGATION_BAR_HEIGHT (iPhoneX ? 88.f : 64.f)
/// 導(dǎo)航欄高度(不包括狀態(tài)欄)
#define NAVI_BAR_HEIGHT 44.0f

/// Tab Bar高度
#define TABBAR_HEIGHT (iPhoneX ? (49.f+34.f) : 49.f)
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kWidth(R) (R)*(kScreenWidth)/320 這里的320我是針對(duì)5s為標(biāo)準(zhǔn)適配的,如果需要其他標(biāo)準(zhǔn)可以修改
#define kHeight(R) kWidth(R)  這里的568我是針對(duì)5s為標(biāo)準(zhǔn)適配的,如果需要其他標(biāo)準(zhǔn)可以修改

代碼簡(jiǎn)單我就不介紹了,
以此思想,我們可以對(duì)字體下手
#define font(R) (R)*(kScreenWidth)/320.0  這里是5s屏幕字體
#define kFONT16                  [UIFont systemFontOfSize:font(16.0f)]
效果圖如下
Paste_Image.png
IMG_1642.PNG

可以看到屏幕label的地方,我這里只寫(xiě)iPhone5s的代碼,在iPhone7跑起來(lái)以后,界面是成比例的,連同字體也是.

不用百度的那么多屏幕適配,簡(jiǎn)單幾句搞定.
唉,又技術(shù)泄露了.
轉(zhuǎn)載記得加上俺名字,謝謝.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容