在cell上使用Mansory做約束的“坑”

相對于復(fù)雜的frame位置的計算,Mansory簡潔高效的語法和使用更受到開發(fā)者的喜愛沦童。對一個視圖的約束不光是要有能夠約束控件的能力庆尘,更要有設(shè)計約束的思想鳄梅。
最近的一次需求變動,要調(diào)整之前的一個板塊衩匣,加入類似微博的@功能和當(dāng)僅有一張圖片時使圖片的比例和原始比例對應(yīng)蕾总,不做裁剪粥航。
類似于下圖:

9C81CB0D-C6CB-47D7-8904-90F8F552035D.png
9F9AC005-5088-4FAD-BBC5-74CD0B3DE8C6.png

開始做的時候我覺得很容易,具有@功能的需求我選擇了用YYLabel實現(xiàn)(生百。递雀。。自己能力有限蚀浆,玩不轉(zhuǎn)coreText)缀程,通過正則篩選出需要高亮的文字部分,圖片的處理通過服務(wù)器返回的原圖尺寸自己處理一下市俊。
cell的高度通過model的計算文字之類的相加起來杨凑,然后對應(yīng)的cell內(nèi)部的控件里面更新一下約束,關(guān)鍵的幾個約束我是這樣設(shè)計的:

1.YYLabel因為繼承與UIVIew摆昧,它的約束就不能單純地像UILabel那樣讓它自適應(yīng)文字高度撩满,它需要想Lab一樣有完整的約束,對此绅你,我約束了YYLabel的上左下右伺帘。
2.中間的ImageView我約束了居下和居左,動態(tài)更新size忌锯。

看起來好像很正確沒有什么問題伪嫁,確實,這要是放在普通的view上不會出現(xiàn)問題汉规,但是放在cell上就有很大的問題了礼殊,cell的復(fù)用機(jī)制使得控件間會產(chǎn)生約束沖突。之前完全沒有留意到這個地方针史,導(dǎo)致我跳坑跳了半天晶伦。
約束沖突出現(xiàn)的場景:

一旦cell的圖很大,在它下一次復(fù)用的時候先會計算cell的高度啄枕,這時候這個高度可能會擠壓著內(nèi)部的控件(因為內(nèi)部控件的約束設(shè)計的時候?qū)ell的ContentView產(chǎn)生的壓力)婚陪,Cell高度變了但控件的約束還是之前的,這個時候就會報約束沖突频祝。但在為cell賦值的時候泌参,更新后的約束又使得約束正常了。所以出現(xiàn)了視圖正常缺不斷報約束沖突的現(xiàn)象常空。

既然知道了原因沽一,那么解決的方式也很簡單,就是不要讓內(nèi)部的控件對cell的ContentView產(chǎn)生壓力漓糙。我調(diào)整了YYLabel的約束铣缠,讓它居下約束變?yōu)閯討B(tài)更新高度,這個問題就解決了。
所以蝗蛙,個人覺得在cell上使用mansory做約束的時候蝇庭,設(shè)計的約束必須要考慮到內(nèi)部控件不對cell的ContentView產(chǎn)生壓力。同樣捡硅,約束不是通用萬能的哮内,在其它環(huán)境下可能還有其它需要注意的地方,所以會約束只是皮毛壮韭,如何設(shè)計好一個約束才是能力北发。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泰涂,隨后出現(xiàn)的幾起案子鲫竞,更是在濱河造成了極大的恐慌,老刑警劉巖逼蒙,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件从绘,死亡現(xiàn)場離奇詭異,居然都是意外死亡是牢,警方通過查閱死者的電腦和手機(jī)僵井,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驳棱,“玉大人批什,你說我怎么就攤上這事∩缃粒” “怎么了驻债?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長形葬。 經(jīng)常有香客問我合呐,道長,這世上最難降的妖魔是什么笙以? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任淌实,我火速辦了婚禮,結(jié)果婚禮上猖腕,老公的妹妹穿的比我還像新娘拆祈。我一直安慰自己,他們只是感情好倘感,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布放坏。 她就那樣靜靜地躺著,像睡著了一般老玛。 火紅的嫁衣襯著肌膚如雪淤年。 梳的紋絲不亂的頭發(fā)上犁珠,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音互亮,去河邊找鬼。 笑死余素,一個胖子當(dāng)著我的面吹牛豹休,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桨吊,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼威根,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了视乐?” 一聲冷哼從身側(cè)響起洛搀,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佑淀,沒想到半個月后留美,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡伸刃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年谎砾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捧颅。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡景图,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碉哑,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布煮寡,位于F島的核電站流强,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏激捏。R本人自食惡果不足惜设塔,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望远舅。 院中可真熱鬧闰蛔,春花似錦、人聲如沸图柏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚤吹。三九已至例诀,卻和暖如春随抠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背繁涂。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工拱她, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扔罪。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓秉沼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親矿酵。 傳聞我的和親對象是個殘疾皇子唬复,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

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