ios開發(fā)約束,ios約束布局

ios約束布局在不同的手機上底部顯示不全

未設(shè)置固定機位。在使用ios約束布局時在不同的手機上底部顯示不全的情況是由于未設(shè)置固定機位的原因,只需在該系統(tǒng)的設(shè)置中進行設(shè)置即可。iOS是由蘋果公司開發(fā)的移動操作系統(tǒng)。

成都創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為武勝企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計武勝網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

iOS 約束沖突解決

AutoLayout使用起來方便快捷,但是當我們的約束設(shè)置出現(xiàn)沖突的時候就是非常蛋疼的時候了,下面說說我解決約束沖突的經(jīng)驗。

好吧,現(xiàn)在我們的約束出現(xiàn)問題了,問題出現(xiàn)的原因本質(zhì)上使我們約束設(shè)置的不夠完美:1,設(shè)置了多余的約束;2,約束的設(shè)置沒有考慮到界面尺寸的變化;3,前兩條都有。

好吧,工程開始報警告了如下:

正常情況下,這樣的段落會重復(fù)出現(xiàn)多次,看著就蛋疼,讓我們來認真分析一下這個log到底想給我們傳達什么信息吧。

先看前面的說明?

意思是,你的約束設(shè)置傻逼了,不拉不拉,你可以這樣做:1,一個一個的看你的約束,看看那個跟你想要的不一樣;2,找到并修改它。 ? 這兩句簡直沒有一點卵用,誰不知道找到并修改它,關(guān)鍵是怎么找啊,也不給個提示,真是醉了,好吧自己研究吧,我們接著看小括號里面的沖突約束吧,先看第一句

我來憑借我多年經(jīng)驗翻譯一下吧:約束:0x13823a560? V:我猜測這里是 vertical 也就是豎直的意思,相應(yīng)的H就是水平的意思 , "|" 是一個替代符號表示后面的小括號里面的 字典中的內(nèi)容也就是 內(nèi)存地址為0x13823920f的UITableViewContentView,|-(0)-[UIView:0x138239490] 就是|到后面這個view 的豎直距離為0 。整句話下來意思就是:地址為0x13823920f的UITableViewContentView 距離 內(nèi)存地址為0x138239490的UIView 的豎直距離為0的內(nèi)存地址為0x13823a560約束。整句話修飾的是一個名詞。

同理,第二句的意思是:UITableviewCellContentView 到這個lab 的豎直距離為5的約束;第三句的意思:這個UIView倒這個UIlabel 的豎直距離為5;第四句沒有V了,并且只涉及到一個控件:UITableviewCellContentView 自身的高度。? 根據(jù)內(nèi)存地址我們可以看出總共涉及到了一個view 、一個contentView、一個label三個控件。 然后下面是被破壞的約束:UIView 到 UILabel的豎直距離為5。也就是說,這個約束在運行的時候因為 父視圖(UITableviewCellContentView)尺寸的改變不能正常約束控件了。

了解了他這個意思,我們可以從我們的Storyboard 或者Xib文件中尋找出問題的 約束了,怎么找呢,我們可以找關(guān)鍵點,從最后一個被破壞的約束找起,豎直距離為5;而且是 label 跟UIView的,想必不會 有太多,如果有太多可以修改幾個排除一下,然后再試著調(diào)整一下父視圖的size,基本上就能確定我們不合理的約束所在了,不過這個過程仍然是比較麻煩的,因為約束沖突本身就是一件蛋疼的事。

找到了產(chǎn)生沖突的約束之后,設(shè)置約束的優(yōu)先級也是一種很方便解決辦法,感謝AmySong同學的提議。

才學尚淺,不足之處歡迎與我理論、探討。

約束優(yōu)先級-iOS

紅色view底部先開始距離綠色view頂部50,在沒有綠色view的時候,紅色view距離藍色view頂部50。

紅色view底部有兩個約束,但是優(yōu)先級數(shù)值不一樣,如果數(shù)值一樣的話,會報沖突。這樣當一個約束移除后(綠色view移除),低優(yōu)先級的約束就生效。

對于 tableViewCell 來說,不能靠移除一個view來讓低優(yōu)先級的約束起作用,因為cell是復(fù)用的,移除cell上的子view的話,之后的布局會錯誤。我們可以通過改變優(yōu)先級約束的數(shù)值。注意: 如果要在運行時改變約束優(yōu)先級的值,約束的優(yōu)先級不能設(shè)置為1000(Required)。

崩潰問題回答

上邊的報錯原因是你已經(jīng)設(shè)置了優(yōu)先級是必須的,不能用其他優(yōu)先級替換。我們可以將兩個優(yōu)先級都設(shè)置成非必須的,只是數(shù)值大小不同,就可以。

ContentHuggingPriority(抗拉伸優(yōu)先級)和ContentCompressionResistancePriority(抗壓縮優(yōu)先級)

如圖中黃色框圈起來的紅色label沒有被壓縮到了正好將綠色label的內(nèi)容顯示完全了。如果綠色的label的內(nèi)容再長一些,而紅色label的寬度約束有沒有設(shè)置的情況下,是可以將紅色label壓縮到看不到的。在這里我是設(shè)置了紅色label的寬度的約束大于等于50

分享名稱:ios開發(fā)約束,ios約束布局
網(wǎng)頁網(wǎng)址:http://muchs.cn/article26/phidcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、營銷型網(wǎng)站建設(shè)軟件開發(fā)、自適應(yīng)網(wǎng)站、網(wǎng)站改版、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)