iOS-界面布局自動適配

近期需要對舊的一個App的界面進行UI改造昏兆,要求效果圖在不同分辨率(iPhone婴噩,iPad)下能保持相同的顯示比例效果是尖。大屏幕下的按鈕醉箕,字體要相應的變大钾腺。

  • 不堪入目的舊界面
    origin.png
  • 改版后的新面孔
    new.png
一,原布局存在問題
  • 圖片的固定尺寸導致在大屏中顯示太小
  • 字號在不同分辨率中不能很好的轉(zhuǎn)換
  • 布局采用固定數(shù)值的尺寸導致大屏整體的顯示效果錯亂
二讥裤,原因
圖片.png

上圖為蘋果設備的分辨率放棒,對開發(fā)者而言,往往只要關(guān)注設備的邏輯分辨率(pt),很長一段時間編寫界面都是以邏輯分辨率大小編寫己英,例如以320寬來計算尺寸以及布局间螟,常有如下硬編碼:

UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 160, 160)];

在顯示時系統(tǒng)會根據(jù)不同機型的縮放因子自動轉(zhuǎn)換成對應的屏幕分辨率。以iPhone5為例损肛,160的寬度轉(zhuǎn)換后大概占屏幕的一半厢破,但對于分辨率是1024的iPad,實際顯示的寬度比例不到20%了治拿。同理摩泪,xib構(gòu)建的界面,如果約束采用的是固定值忍啤,也一樣會出現(xiàn)類似問題

三加勤,界面如何適配iPhone仙辟,iPad

想要在iPhone,iPad的中顯示效果一致鳄梅,達到同比放大的視覺效果叠国,就是如何處理好字體,間距戴尸,控件大小的等比例縮放問題粟焊。核心思路就是避免寫死的數(shù)值硬編碼

1: 代碼構(gòu)建的界面使用比例布局
    [editView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.center.equalTo(self.view);
        make.width.equalTo(self.view.mas_width).multipliedBy(0.7);
        make.height.equalTo(self.view.mas_width).multipliedBy(0.7*0.7); 
    }];
2: xib構(gòu)建的界面約束采用百分比布局布局
  • view的寬度:設置相對于容器寬度的百分比
    圖片.png
  • view固定寬高比:設定其 Aspect Ratio
    圖片.png
  • view與父容器邊距:View.Leading 與 Superview.Leading 間距占 Superview.Width 的百分比
    圖片.png
3:字體等比自動適配

以UI給的尺寸圖iPhone6/6s(375*667)為例,獲取屏幕的最長邊孙蒙,通過比例換算最終的字體大小项棠,定義宏

#define SCREEN_HEIGHT MAX([UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width)
#define font(R) (R)*(SCREEN_HEIGHT)/667
// 如果是xib中的控件,則需在awakeFromNib中設置即可
label.font = [UIFont systemFontOfSize: font(11)];

調(diào)整后效果如開頭所示

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挎峦,一起剝皮案震驚了整個濱河市香追,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坦胶,老刑警劉巖透典,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顿苇,居然都是意外死亡峭咒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門纪岁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凑队,“玉大人,你說我怎么就攤上這事幔翰′霭保” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵导匣,是天一觀的道長才菠。 經(jīng)常有香客問我,道長贡定,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任可都,我火速辦了婚禮缓待,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渠牲。我一直安慰自己旋炒,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布签杈。 她就那樣靜靜地躺著瘫镇,像睡著了一般鼎兽。 火紅的嫁衣襯著肌膚如雪铣除。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天择卦,我揣著相機與錄音郎嫁,去河邊找鬼。 笑死泽铛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的盔腔。 我是一名探鬼主播铲觉,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灯荧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逗载,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤厉斟,失蹤者是張志新(化名)和其女友劉穎强衡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體感挥,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡越败,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年究飞,在試婚紗的時候發(fā)現(xiàn)自己被綠了堂鲤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媒峡。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡丝蹭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镜沽,到底是詐尸還是另有隱情贱田,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布蔬墩,位于F島的核電站耗拓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏樟插。R本人自食惡果不足惜竿刁,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸵熟。 院中可真熱鬧负甸,春花似錦、人聲如沸惑惶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽报破。三九已至充易,卻和暖如春荸型,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瑞妇。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工辕狰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蔓倍。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像偶翅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子母剥,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容