App的設(shè)計圖根據(jù)是否可以滾動分成兩種設(shè)計圖蜘矢,下面我們說說這個不可以滾動的設(shè)計狂男,怎么在各種不同尺寸的設(shè)備中適配。
這是以iPhone8的尺寸(750*1334)做的效果圖品腹。
類似這種頁面岖食,就是不可滾動的效果圖。
我們按照標(biāo)注舞吭,在xib或者storyboard用autolayout布局泡垃;
為了展示效果圖,在布局文件底部添加了一個正方形羡鸥,居中顯示
同樣的布局文件蔑穴,因為我們的標(biāo)注是基于iPhone8的尺寸,結(jié)果只有iPhone8的顯示效果圖是滿意的惧浴,其他設(shè)備的的效果圖都無法接受存和。
設(shè)備 | 寬/縮放比 | 高/縮放比 |
---|---|---|
效果圖 | 750 | 1334 |
iPhone4s | 640/0.85 | 960/ 0.72 |
iPhone5 | 640/0.85 | 1136/0.85 |
iPhone8 | 750/1.0 | 1334/1.0 |
iPhone8 Plus | 1242/1.66 | 2208/1.66 |
iPhoneX | 1125/1.5 | 2436/1.82 |
在ios的布局方式中,有一種自動布局叫做Autoresizing。
說明:這種布局方式不能與autolayout同時使用捐腿。
在不同設(shè)備上的效果纵朋,總體感覺還是可以,即使在最小的iPhone4s茄袖,也是可以顯示完整的操软;但是,紅色的正方形控件宪祥,在iPhone4s寺鸥、iPhoneX上面變形了,如果這個正方形是ImageView的話品山,顯示出來的圖片也會變形了胆建,這個肯定是不合格的。
但在Autoresizing這種布局上肘交,沒辦法去處理這個問題笆载。
設(shè)備 | 寬/縮放比 | 高/縮放比 |
---|---|---|
效果圖 | 750 | 1334 |
iPhone4s | 640/0.85 | 960/ 0.72 |
iPhone5 | 640/0.85 | 1136/0.85 |
iPhone8 | 750/1.0 | 1334/1.0 |
iPhone8 Plus | 1242/1.66 | 2208/1.66 |
iPhoneX | 1125/1.5 | 2436/1.82 |
根據(jù)上圖,各個設(shè)備的屏幕寬高與效果圖的寬高的縮放比例是不同涯呻,只有iPhone8 Plus是近似相同凉驻。這就造成了上面的正方形控件變形的原因。
除此之外复罐,我們還能怎么做呢涝登。
這篇文章 地址:http://www.reibang.com/p/eab78d779c7e 給了思路.
- (void)viewDidLoad {
[super viewDidLoad];
CGRect rect = [UIScreen mainScreen].bounds;
float x = rect.size.width / 375;
float y = rect.size.height / 667;
NSLog(@"screen rect === %@",NSStringFromCGRect(rect));
NSLog(@"y==%@",@(y));
NSLog(@"x==%@",@(x));
// CGRect rect = [UIScreen mainScreen].nativeBounds;
// float x = rect.size.width / 750;
// float y = rect.size.height / 1334;
// NSLog(@"screen rect === %@",NSStringFromCGRect(rect));
// NSLog(@"y==%@",@(y));
// NSLog(@"x==%@",@(x));
//保證寬高的縮放比一致,才不會出現(xiàn)正方形控件變形的情況效诅。
//取縮放比小的那個胀滚,才不會出現(xiàn)界面超出屏幕
if(x > y){
self.view.transform = CGAffineTransformMakeScale(y, y);
}else{
self.view.transform = CGAffineTransformMakeScale(x, x);
}
}
代碼已經(jīng)上傳了 DEMO
補充
在xib或者storyboard用百分比布局
1.控件寬高的百分比
控件的寬高百分比這個簡單
1).設(shè)置控件自身的寬高比;
2).設(shè)置控件的寬度等于父View的寬度乱投,再設(shè)置Multiplier的比值(控件寬度:父View的寬度)
這樣控件會隨著屏幕的大小而縮放咽笼,控件自身也有寬高比,不會發(fā)生變形戚炫。
2.控件寬高的百分比
兩個紅色的控件剑刑,
第一個是距離左邊距37.5的距離;在不同屏幕双肤,這個值是固定的施掏。
第二個是距離父View中線X坐標(biāo)的0.2倍;在不同屏幕茅糜,這個值是變化的七芭。
計算公式(iPhone8):375(屏幕寬)0.5(中線X坐標(biāo))0.2(系數(shù))=37.5。
第一個控件:固定左邊距
第二個控件:百分比左邊距
跟第一個控件的用法限匣,主要區(qū)別是
SecondItem:SuperView.Center.X;
Constant:0(固定值)
Multiplier:0.2(比例)
這樣可以在不同的屏幕中抖苦,對比看到兩個控件實際左邊距的差別。
代碼已經(jīng)上傳了 DEMO