天天看點

一套代碼解決ios的所有界面适配問題

在蘋果推出iPhone6Plus後,蘋果的機型增多,顯示屏的大小也變得多樣,是以之前的絕對布局的方法難以滿足手機的适配問題,是以蘋果推出了相對布局的界面适配方法,本文所講的界面适配方法主要基于masonry的适配方法,如果不懂masonry得界面布局方法,請先移步

http://www.cocoachina.com/ios/20141219/10702.html

1.界面分析:蘋果自4s至7,大概以下幾種尺寸

http://blog.csdn.net/phunxm/article/details/42174937/  

大緻有320x480,320x568,375x667,414x736這四種尺寸,我們發現這四種尺寸寬和高既不相等,也不成比例,是以在做設計的時候如果隻以一種機型為标準,那麼就會出現在别的機型控件的顯示問題,是以隻要考慮小機型超出螢幕的部分能夠顯示出來,那麼就可以解決所有界面的适配問題。

    我們考慮用scrollview加載試圖,那麼小的螢幕的手機就可以通過scrollview滑動将試圖展現出來,如下圖:

2.尺寸統一

在這四種機型中,我們隻關注手機的寬高比例,隻要做到在各種機型中寬高比例一緻,那麼就可以實作機型的統一,我們發現在這種尺寸中寬高比例分别為0.67,0.56,0.56,0.56,我們發現後面3中機型比例大體一緻,我們解決的方法采用uiscrollview,增加螢幕顯示的空間,進而實作界面的寬高比例一緻,在masonry中的用法中的中級用法中可以自動的計算出contentSize,是以我們在做界面的時候可以在整個selv.view上面利用masonry放入一個scrollview,在超出螢幕的控件采用scrollview也可以顯示在界面上,是以可以把界面上的控件添加到scrollview上面,進而實作所有的界面适配(這種方法也可以實作在ipad上面的适配),現附上代碼,僅供參考

- (void) viewDidLoad

{

    [superviewDidLoad];

    self.automaticallyAdjustsScrollViewInsets =NO;

    self.scrollView=[[UIScrollView alloc]init];

    [self.view addSubview:self.scrollView];

    [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.and.left.and.right.equalTo(self.view);

  make.bottom.equalTo(self.view).offset(-10);

    }];

    self.scrollView.alwaysBounceVertical=YES;

    self.scrollView.scrollEnabled=YES;

    self.scrollView.showsVerticalScrollIndicator=NO;

    self.viewContent=[[UIView alloc]init];

    [self.scrollView addSubview:self.viewContent];

    [self.viewContent mas_makeConstraints:^(MASConstraintMaker *make) {

        make.edges.equalTo(self.scrollView);

        make.width.equalTo(self.scrollView);

    }];

    [self createView:self.viewContent];

    if (self.viewContent.subviews.count>0){

        [self.viewContentmas_makeConstraints:^(MASConstraintMaker *make) {

            make.bottom.equalTo(self.viewContent.subviews.lastObject).offset(10);

        }];

    }

}

- (void) createView:(UIView*)contentView

{

}

控件添加到contentView上面,如有不懂,可以發疑問至[email protected]

demo 位址:https://github.com/changcongcong/CCInterfaceAdaptation ,求點贊

繼續閱讀