3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
答主也是寫(xiě)了好幾年Android才過(guò)來(lái)iOS的技術(shù)渣。一開(kāi)始感覺(jué)iOS各種不爽,然而寫(xiě)了幾個(gè)月習(xí)慣了之后,竟然發(fā)現(xiàn)反而我已經(jīng)沒(méi)法寫(xiě)好Android了。因?yàn)閕OS其實(shí)寫(xiě)起來(lái)比我最初想象的要方便的多,也比Android方便的多。
至于我初學(xué)時(shí)排斥iOS開(kāi)發(fā)的原因,很大程度上歸結(jié)于Xcode有點(diǎn)糟糕的體驗(yàn)。Xcode有一個(gè)很大的毛?。好髅骱芊奖愫艹S玫墓δ?,卻放在角落里當(dāng)圖標(biāo),連提示都不給。
Interface Builder的AutoLayout約束功能——就是放在可視化編輯區(qū)域右下角的四個(gè)不起眼的小圖標(biāo)——也是如此。選中一個(gè)控件,點(diǎn)第二個(gè)按鈕,可以設(shè)置水平垂直居中約束;點(diǎn)第三個(gè)按鈕可以設(shè)置與上下左右最近控件的距離、固定寬度、固定高度、固定寬高比;最后一個(gè)按鈕用于按設(shè)置好的約束更新視圖。這四個(gè)按鈕功能甚至還更強(qiáng)大:如果按住command多選一些控件,可以設(shè)置多個(gè)控件對(duì)齊等。
一旦控件被設(shè)置了約束,它就有了隱式的自適應(yīng)內(nèi)容的趨勢(shì),除非強(qiáng)制設(shè)置了一些約束改變它的大小。
如果多個(gè)UILabel之類(lèi)的自適應(yīng)內(nèi)容的控件排列在一起,還要注意一下右側(cè)屬性欄“尺寸”標(biāo)簽最下方的Content Hugging Priority和Content Compression Resistance Priority。答主詞匯淺薄,暫時(shí)描述不清楚這個(gè)功能,只能說(shuō)有點(diǎn)像Android中的layout_weight。
AutoLayout的思想也是從Android轉(zhuǎn)到iOS的開(kāi)發(fā)者要特別注意的,尤其是約束的數(shù)量要恰到好處,既不能少到出現(xiàn)歧義,又不能多到發(fā)生沖突;每個(gè)控件的約束必須足以確定它的水平位置、垂直位置、寬度和高度(UILabel等可以自適應(yīng)內(nèi)容,則不需要確定寬度和高度)。
在答主自己的實(shí)踐過(guò)程中,AutoLayout可以實(shí)現(xiàn)很多Android Layout不能實(shí)現(xiàn)的需求(也可能是因?yàn)榇鹬鲗?duì)Android了解不夠)。所以說(shuō)雖然初學(xué)者可能感覺(jué)AutoLayout不如Android Layout方便,但是當(dāng)開(kāi)發(fā)者掌握了AutoLayout的各種用法之后,就會(huì)覺(jué)得這同樣是一個(gè)方便且更加強(qiáng)大的工具。
- 3 回答
- 0 關(guān)注
- 736 瀏覽
添加回答
舉報(bào)