代碼適配

距離寫這個文章已經(jīng)過去2年了, 現(xiàn)在還能不能用?? 估計不好用吧, 也沒人這么用, 感慨一下, 反正現(xiàn)在也不寫UI了

代碼適配

首先說下讓自己的程序支持iPhone6和6+,第一種使用官方提供的launch screen.xib,這個直接看官方文檔即可,這里不再多述;第二種方法是和之前iPhone5的類似,比較簡單,為iPhone6和6+添加兩張?zhí)厥獾膒ng
iPhone6:命名:Default-375w-667h@2x.png 分辨率:7501334
6+ 命名:Default-414w-736h@3x.png 分辨率:1242
2208
注意:
如果要在app的介紹頁面里有“為iPhone6,6 plus優(yōu)化”的字樣就必須使用第一種方法,使用第二種方法的話還是會顯示“為iPhone5優(yōu)化”

下面說一下純代碼適配
首先iPhone5的界面一定要完全適配,這樣才能完美適配6和6Plus。
首先,我么我們要觀察一下5,6和6Plus的尺寸比例關(guān)系

很明顯能看出這三種屏幕的尺寸寬高比是差不多的,因此可以在5的基礎(chǔ)上,按比例放大來適配6和6Plus的屏幕。

在AppDelegate.h中
1
2
@property float autoSizeScaleX;
@property float autoSizeScaleY;
在AppDelegate.m中
1
2
3
4
5
6
7
8
9
10
11
12
13
14

define ScreenHeight [[UIScreen mainScreen] bounds].size.height

define ScreenWidth [[UIScreen mainScreen] bounds].size.width

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];

    if(ScreenHeight > 480){
    myDelegate.autoSizeScaleX = ScreenWidth/320;
    myDelegate.autoSizeScaleY = ScreenHeight/568;
    }else{
    myDelegate.autoSizeScaleX = 1.0;
    myDelegate.autoSizeScaleY = 1.0;
    }
    }

因為iPhone4s屏幕的高度是480,因此當(dāng)屏幕尺寸大于iPhone4時,autoSizeScaleX和autoSizeScaleY即為當(dāng)前屏幕和iPhone5尺寸的寬高比。比如,
如果是5,autoSizeScaleX=1,autoSizeScaleY=1;
如果是6,autoSizeScaleX=1.171875,autoSizeScaleY=1.17429577;
如果是6Plus,autoSizeScaleX=1.29375,autoSizeScaleY=1.2957;
現(xiàn)在我們獲取了比例關(guān)系后,先來看一下如何解決代碼設(shè)置界面時的適配。
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)這個方法使我們常用的設(shè)置尺寸的方法,現(xiàn)在我設(shè)置了一個類似于這樣的方法。
在.m文件中
1
2
3
4
5
6
7
8
9
10
11
UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake1(100, 100, 50, 50)];

CG_INLINE CGRect
CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
CGRect rect;
rect.origin.x = x * myDelegate.autoSizeScaleX; rect.origin.y = y * myDelegate.autoSizeScaleY;
rect.size.width = width * myDelegate.autoSizeScaleX; rect.size.height = height * myDelegate.autoSizeScaleY;
return rect;
}
這樣,這個btn按鈕在5,6和6Plus的位置和尺寸比例都是一樣的。

如果整個項目做完后才開始做適配的話這個方法的優(yōu)勢就體現(xiàn)出來了,面對幾十個工程文件,只需自定義并且替換你的CGRectMake方法,再加上storyBoradAutoLay這個方法就瞬間完成大部分甚至全部的適配,如果遇到tableView的或者其他的手動調(diào)整一下即可。

不充一下就是,如果又pch,就把CG_INLINE CGRect CGRectMake1方法 寫到pch里面

如果沒有pch, 就創(chuàng)建一個頭文件,然后把方法寫到頭文件里面,然后在想用的地方引入頭文件就好

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

相關(guān)閱讀更多精彩內(nèi)容

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