一套程式碼解決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
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 ,求點贊