XIB、StoryBoard-約束

1. 基礎(chǔ)篇

-目的:用自動(dòng)布局(StoryBoard中)實(shí)現(xiàn)幾個(gè)View等分屏幕

-效果圖:

Snip20151130_3.png

-實(shí)現(xiàn)方法:

a.設(shè)置第一個(gè)view的約束(既灰色view),約束為上,左,下為0,0,0

b.設(shè)置第二個(gè)view的約束(既藍(lán)色view),約束為上,左,下為0,0,0

c.設(shè)置第三個(gè)view的約束(既粉色view),約束為上,左,下為0,0,0

d.設(shè)置第四個(gè)view的約束(既橘色view),約束為上,左,下,右為0,0,0,0

e.選中四個(gè)View,設(shè)定四個(gè)View為等寬,如圖

Snip20151130_4.png

2.進(jìn)階篇

目的:用自動(dòng)布局(StoryBoard中)實(shí)現(xiàn)幾個(gè)控件的等間距分割

效果圖:(簡版,約束版)(事例為距上方藍(lán)線的約束)

Snip20151130_6.png

Snip20151130_5.png

實(shí)現(xiàn)方法

小TIPS:這里使用自動(dòng)布局進(jìn)行等間距分割的時(shí)候,要借助輔助的view控件

a. 對(duì)微博icon設(shè)置約束,約束為,上,左,寬,高為18,50,30,30

b. 設(shè)置其他三個(gè)icon與微博icon等寬,等高,等水平

c. 設(shè)置豆瓣icon距離上,右的約束為18,50

d. 拖三個(gè)view到四個(gè)icon中間,如圖

Snip20151130_7.png

e.對(duì)三個(gè)view分別設(shè)定約束(相對(duì)于左側(cè)icon)為水平居中,等高,左右約束為0,0

Snip20151130_8.png

Snip20151130_9.png

f.最后對(duì)三個(gè)view(選中)設(shè)定等寬

g.更新約束看看效果吧

3. iOS9.0更新(StackView)

注:該方法只能適配iOS9.0系統(tǒng)

將StackView拖動(dòng)到StoryBoard中,設(shè)置好相應(yīng)的約束,這個(gè)view就相當(dāng)如一個(gè)容器,將想進(jìn)行等間距的控件放入StackView中,并設(shè)定屬性如圖

Snip20151130_10.png

效果圖:

在移動(dòng)端開發(fā)過程中骂维,可視化的搭建UI效率是非常高的,蘋果官方也是強(qiáng)力推薦。我們現(xiàn)在來學(xué)一學(xué)如何利用系統(tǒng)自帶的故事版(storyboard)來搭建UI耕餐〗∨可視化搭建UI除了可以使用storyboard也可以使用xib旺上。其實(shí)使用它們也是非常容易的,只需要在xcode的右下角處搜索控件的名字糖埋,然后拖拽到故事板上即可宣吱,如圖

拖拉創(chuàng)建控件

(為了方便觀看,我們先隨便給它設(shè)個(gè)背景色)

設(shè)置控件的背景顏色

拖拽完之后瞳别。就是根據(jù)需求去設(shè)置控件的大小征候,以及屏幕的適配(iphone4~iPhone 6s plus、或者各種ipad型號(hào))等祟敛。在這個(gè)設(shè)置大小的點(diǎn)疤坝,我們就要用到約束。以前用代碼也是要用到約束去限制每個(gè)控件的大小的馆铁。因此約束的概念在這里也就不展開講了跑揉。(假如你實(shí)在不想用約束的話,其實(shí)也是可以實(shí)現(xiàn)屏幕的適配的埠巨∨显#可以用比例的大小去設(shè)置衣撬,類似于h5,用屏幕比例的方法扮饶,具體細(xì)節(jié)可以私聊)【吡罚現(xiàn)在主要講講如何實(shí)現(xiàn)給控件加上約束。

(現(xiàn)在先拖拉一個(gè)UIView來設(shè)置一個(gè)距離頂部的約束)

控件添加頂部約束

這樣設(shè)置完頂部的約束之后就會(huì)出現(xiàn)如下的現(xiàn)象

添加第一個(gè)約束

出現(xiàn)紅色說明還有欠缺的約束沒有加完甜无。頂部那個(gè)線就是我們添加的約束扛点。假如我們先寫距離頂部的距離是201。那么我們不論切換到哪個(gè)屏幕的大小View距離頂部的距離都是201岂丘。我們?cè)偻筮吿砑右粋€(gè)約束陵究,然后設(shè)置它的寬高為100。即如圖

去掉約束邊緣

添加其他約束

約束完之后就可以了(如果出現(xiàn)的約束是藍(lán)色的奥帘,說明約束正常)

約束完成

這樣約束完之后的那個(gè)UIView的大小和位置就是固定的了铜邮。以后不論修改成哪個(gè)屏幕都是一樣的。

不過這樣有個(gè)缺點(diǎn)寨蹋,它的距離的位置和大小是絕對(duì)的而不是相對(duì)的松蒜。假如你用iphone4s展示出這個(gè)界面,就覺得剛剛好的話已旧,那么用iphone6就會(huì)顯得有點(diǎn)偏秸苗,用例子看看,如圖

iphone6模擬器運(yùn)行效果

iphone4s模擬器運(yùn)行效果

所以运褪,我們應(yīng)該得用相對(duì)位置和相對(duì)大小惊楼。用相對(duì)位置和相對(duì)大小的話,它是根據(jù)屏幕的大小去自動(dòng)適配控件的位置和大小秸讹,這樣子就可以比較符合開發(fā)員的預(yù)期需求檀咙。那么我們?nèi)绾蝸碜瞿兀课覀儊碓囋嚕?/p>

假如我們想讓它水平居中璃诀,那么我們把原來的左邊約束給刪除攀芯,添加一個(gè)水平居中的約束點(diǎn)擊View,然后點(diǎn)到約束的控制面板文虏,找到左邊的約束,選中殖演,按delete刪除

刪除部分約束

(ps如果選不中約束按delete的話氧秘,會(huì)把整個(gè)View都刪除掉的,不過不用擔(dān)心趴久,按command+Z撤銷回來即可丸相,然后再選中約束,把它刪除掉)

刪除完約束的效果

刪除完約束之后約束會(huì)爆紅是正潮斯鳎現(xiàn)象灭忠,不管它膳算,我們來添加水平居中的約束,先點(diǎn)擊View弛作,然后點(diǎn)擊約束約束涕蜂,horizantally(水平)打上勾,選擇update然后add上去映琳,如圖

添加水平居中約束

這樣不論是在哪個(gè)屏幕上,我們的控件都水平居中了机隙。

添加水平居中后的效果

這樣就水平居中了。既然是相對(duì)約束萨西,當(dāng)然不止僅僅只能水平居中了有鹿,比如說我要偏左一點(diǎn)怎么辦?偏右一點(diǎn)怎么辦谎脯?改水平居中系數(shù)葱跋!看圖說話

修改居中系數(shù)

點(diǎn)擊那個(gè)edit出現(xiàn)后修改那個(gè)Multiplier,那個(gè)就是系數(shù)值源梭,比1小就是往左娱俺,比1大就是往右,我們來設(shè)置一下0.6和1.8的效果看看

水平居中系數(shù)為0.6

(ps按command和-可以縮小故事版的視圖咸产,方便查看矢否,按command和+就是放大,值得注意一點(diǎn)的是脑溢,至少要原故事版大小或者比原故事板大小的大才能在上面修改控件僵朗,不然頂多只能移動(dòng)一下視圖的位置而已。雙擊視圖就可以恢復(fù)原大小了)

水平居中系數(shù)為1.8

這樣看是不是很明顯屑彻?那么這樣就可以根據(jù)實(shí)際需求設(shè)定我們需要的位置了验庙。垂直居中也是這樣設(shè)置。就是選中水平約束下面那個(gè)(vertically)

垂直居中約束

寫完相對(duì)位置之后社牲,我們應(yīng)該要來想想怎么設(shè)置相對(duì)大小了粪薛。為了方便演示,先把原來那個(gè)刪除了搏恤,重新拉一個(gè)UIView违寿。把它的大小和屏幕設(shè)置成等高等寬。

先選中當(dāng)前控件和要等高等寬的父控件熟空,把equal widths和equal heights打上勾就可以藤巢,add上去就可以了。

與父視圖等高等寬

(ps這里要注意選擇當(dāng)前控件和要等高等寬的父控件按住command用鼠標(biāo)點(diǎn)擊左邊的控件名就可以了息罗,就是框起來的那兩個(gè))

添加完之后約束那里還是爆紅掂咒,是因?yàn)槲覀冞€沒有加位置約束,我們給它左邊和上邊都是0.0,這樣就可以了

添加等高等寬約束

接下來點(diǎn)中View绍刮,選擇約束温圆,添加左、上為0

添加位置約束

OK孩革,到這里就可以實(shí)現(xiàn)相對(duì)大小了岁歉。

添加完成約束的效果

根據(jù)那個(gè)相對(duì)位置的設(shè)置,同理的嫉戚,我們想修改它不是滿屏大小刨裆,也可以使用系數(shù)

相對(duì)大小的系數(shù)

我們把寬度修改成0.4試試

寬度為父控件的0.4

這樣子View的寬度不論是切換到哪個(gè)屏幕都是占屏幕總寬的0.4大小了。寬高同理彬檀,想學(xué)習(xí)的自己慢慢嘗試帆啃。

//居中約束

(1)拖拉一個(gè)View到LoginViewController.xib的視圖上面,調(diào)整高度為300窍帝,我下面都稱其為MiddleView吧努潘,如下圖所示,

為了讓圖片垂直居中顯示坤学,我們可以通過鍵盤的上(↑)下(↓)按鍵移動(dòng)View疯坤。

(2)拖兩個(gè)UITextField和一個(gè)UIButton到View上面,同時(shí)設(shè)置了MiddleView的背景色為LightGray深浮,如下圖所示压怠,

(3)給MiddleView添加約束,使其水平和豎直居中飞苇,先選中MiddleView菌瘫,然后按照下圖操作,

(4)給MiddleView添加寬高(width and height)的約束布卡,上面僅僅添加水平和垂直居中雨让,會(huì)有警告,這是因?yàn)樘砑拥募s束還不夠忿等,如下圖所示栖忠,添加寬高的約束,

(5)給MiddleView上面的空間添加相互間的約束贸街,這時(shí)候添加約束就簡單多了庵寞,先選中MiddleView上面所有的控件,只要點(diǎn)擊一個(gè)Add Missing Constraints薛匪,捐川,如下圖所示,

通過上面一些簡單的操作蛋辈,保證登陸界面中的控件不管在3.5寸還是4寸的屏幕上面,都能夠居中顯示了。運(yùn)行效果如下所示冷溶,

3.5寸屏幕效果圖渐白,

4寸屏幕效果圖,

5逞频、另外一種居中可以參考

水平居中:https://segmentfault.com/a/1190000002997979

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纯衍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子苗胀,更是在濱河造成了極大的恐慌襟诸,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件基协,死亡現(xiàn)場離奇詭異歌亲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)澜驮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門陷揪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杂穷,你說我怎么就攤上這事悍缠。” “怎么了耐量?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵飞蚓,是天一觀的道長。 經(jīng)常有香客問我廊蜒,道長趴拧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任劲藐,我火速辦了婚禮八堡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘聘芜。我一直安慰自己兄渺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布汰现。 她就那樣靜靜地躺著挂谍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞎饲。 梳的紋絲不亂的頭發(fā)上口叙,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音嗅战,去河邊找鬼妄田。 笑死俺亮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疟呐。 我是一名探鬼主播脚曾,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼启具!你這毒婦竟也來了本讥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤鲁冯,失蹤者是張志新(化名)和其女友劉穎拷沸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薯演,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撞芍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涣仿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勤庐。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖好港,靈堂內(nèi)的尸體忽然破棺而出愉镰,到底是詐尸還是另有隱情,我是刑警寧澤钧汹,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布丈探,位于F島的核電站,受9級(jí)特大地震影響拔莱,放射性物質(zhì)發(fā)生泄漏碗降。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一塘秦、第九天 我趴在偏房一處隱蔽的房頂上張望讼渊。 院中可真熱鬧,春花似錦尊剔、人聲如沸爪幻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挨稿。三九已至,卻和暖如春京痢,著一層夾襖步出監(jiān)牢的瞬間奶甘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工祭椰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臭家,地道東北人疲陕。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像钉赁,于是被迫代替她去往敵國和親鸭轮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評(píng)論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程橄霉,因...
    小菜c閱讀 6,358評(píng)論 0 17
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件邑蒋、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評(píng)論 4 62
  • 辭職這件事,我真的想了很久卿堂。我越認(rèn)真的想束莫,越認(rèn)真的發(fā)現(xiàn),這是一件必須百分之一百認(rèn)真對(duì)待的事草描!近來览绿,就辭職一事,反思...
    滄海一只貓閱讀 578評(píng)論 2 3
  • 那天看完了電影 興致盎然地和仙女說要寫篇大作穗慕。 仙女說你有多久沒正兒八經(jīng)地寫點(diǎn)兒字了呀饿敲。 哦 好久好久了... 那...
    Insight__閱讀 245評(píng)論 0 0