真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

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

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

iOS 約束沖突解決

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

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

好吧,工程開始報(bào)警告了如下:

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

先看前面的說(shuō)明?

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

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

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

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

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

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

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

紅色view底部先開始距離綠色view頂部50,在沒有綠色view的時(shí)候,紅色view距離藍(lán)色view頂部50。

紅色view底部有兩個(gè)約束,但是優(yōu)先級(jí)數(shù)值不一樣,如果數(shù)值一樣的話,會(huì)報(bào)沖突。這樣當(dāng)一個(gè)約束移除后(綠色view移除),低優(yōu)先級(jí)的約束就生效。

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

崩潰問題回答

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

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

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


文章標(biāo)題:ios開發(fā)約束,ios約束布局
URL分享:http://weahome.cn/article/phidcg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部