關於iPhone設備不一樣顯示尺寸適配的一些方法 關於iPhone設備不一樣顯示尺寸適配的一些方法

關於iPhone設備不一樣顯示尺寸適配的一些方法

 

 

------關於適配的理解------html

一、什麼是適配?佈局

    適配是對不一樣硬件和系統軟件的適應,硬件包括屏幕顯示,處理器,內存等等(目前主要是屏幕適配,iPhone 6s新增了3D Touch功能,其餘硬件功能並無實質性的改變),軟件主要是不一樣iOS系統(有些在最新系統(一般會盡可能向下兼容)再也不支持的方法都須要作一些判斷)。post

二、爲何要適配?字體

     適配是爲了兼容不一樣的設備。url

三、屏幕適配主要有哪些方式?htm

    (1)等比例適配(全部視圖按屏幕大小縮放,相對位置不變):a、純代碼;b、代碼+storyboard(不使用自動佈局);c、代碼+storyboard(使用自動佈局)。blog

    (2)自由適配(主要使用自動佈局):因爲同一佈局在不一樣大小的屏幕上顯示效果不同,若是僅僅是等比縮放,有時顯示效果差強人意;在顯示內容尺寸符合操做習慣(這個看本身咋想)的狀況下,屏幕大小最大的區別是屏大顯示內容多(如瀏覽新聞等,除了只有一些固定圖片、控件等的簡潔界面),a、約束內容的間距及相對大小;b、約束內容的寬高及相對位置;c、約束內容的間距、寬高。圖片

 

------適配的一些方法------內存

狀況一get

(等比適配,代碼+storyboard,不使用自動佈局,建議用iPhone6的尺寸佈局),經過獲取屏幕尺寸,重定義CGRectMake,更新全部視圖及其子視圖的frame,完成等比適配。注意字體、圖片,以及tableView、collectionView。

一、——————AppDelegate.h添加:

+ (void)ergodicView:(UIView *)view;

 

二、——————AppDelegate.m添加:

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

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

#define ScreenScaleX (ScreenWidth/375)//相對於蘋果6屏幕

#define ScreenScaleY (ScreenHeight/667)

 

//按屏幕自動適配storyBoard全部視圖

+ (void)ergodicView:(UIView *)view{

    

    if (view.subviews.count != 0) {

        for (UIView *temp in view.subviews) {

            temp.frame = CGRectMake1(temp.frame.origin.x, temp.frame.origin.y, temp.frame.size.width, temp.frame.size.height);

            [self ergodicView:temp];

        }

    }

}

 

//修改CGRectMake

CG_INLINE CGRect

CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

{

    CGRect rect;

    rect.origin.x = x * ScreenScaleX;

    rect.origin.y = y * ScreenScaleY;

    rect.size.width = width * ScreenScaleX;

    rect.size.height = height * ScreenScaleY;

    return rect;

}

 

--------------------

狀況二

使用autolayout佈局後,可從新設置視圖的frame。等viewDidLoad加載完後,再延遲改變視圖的frame,不延遲會被storyboard從新設置。也能夠在viewDidLayoutSubviews或viewDidAppear從新設置frame

相關文章
相關標籤/搜索