Layout NSInternalInconsistencyException Issue

UICollectionView:打造時(shí)間軸布局里雨女,實(shí)現(xiàn)橫向滾動(dòng)的時(shí)間軸布局時(shí),當(dāng)滑動(dòng)到末尾時(shí)阳准,遇到了下面的問(wèn)題:

NSInternalInconsistencyException: layout attributes for xxx changed from xxx to xxx without invalidating the layout.
Nigerian Timeline

搜索一番后沒(méi)有發(fā)現(xiàn)有效的措施氛堕,也沒(méi)有找到具體的原因。其實(shí)上面已經(jīng)告訴了問(wèn)題所在野蝇,但初期毫無(wú)頭緒讼稚,如果你在此時(shí)插入invalidateLayout()更新布局則會(huì)發(fā)生無(wú)限調(diào)用自身的情況。在使用 Header 來(lái)?yè)?dān)當(dāng)軸線的時(shí)候在看上去非橙粕颍苛刻的條件下會(huì)遇到這種情況锐想,但要湊齊其實(shí)也不是很難,不過(guò)最終我改動(dòng)了其他部分的代碼乍狐,這個(gè)又無(wú)法復(fù)現(xiàn)了赠摇。

屏幕快照 2015-11-23 下午6.45.44.png

不過(guò),我剛開始使用 DecorationView 來(lái)實(shí)現(xiàn)這根軸線的時(shí)候這個(gè)問(wèn)題一直存在浅蚪,后來(lái)無(wú)意中解決了藕帜,終于發(fā)現(xiàn)了問(wèn)題所在。剛開始我設(shè)定 DecorationView 在 X 軸方向上的起始和終點(diǎn)位置與當(dāng)前可視區(qū)域有關(guān):

if let decorationViewLayoutAttr = self.layoutAttributesForDecorationViewOfKind(decorationLineViewKind, atIndexPath: NSIndexPath(forItem: 0, inSection: 0)){
   let timelineStartX = rect.origin.x//如果有 header 存在惜傲,則起點(diǎn)設(shè)置為 header 的終點(diǎn)
   let timelineEndX = rect.origin.x + rect.width//如果有 footer 存在洽故,則終點(diǎn)設(shè)置為 footer 的起點(diǎn)
   decorationViewLayoutAttr.frame = CGRect(x: timelineStartX, y: timelineY, width: timelineEndX - timelineStartX, height: lineThickness)
   layoutAttrs?.append(decorationViewLayoutAttr)
}

當(dāng)滑動(dòng)到末尾時(shí),我們往往會(huì)繼續(xù)滑動(dòng)盗誊,這時(shí)布局系統(tǒng)會(huì)要求超過(guò)了 contentSize 區(qū)域的布局信息收津,在這個(gè)過(guò)程中 DecorationView 的布局信息發(fā)生了變化,導(dǎo)致了異常浊伙;盡管在之前的滑動(dòng)過(guò)程中撞秋,DecorationView 的布局信息也一直在變化,但在末尾時(shí)的邊界情況還是導(dǎo)致了異常嚣鄙,只能猜測(cè)這是內(nèi)部實(shí)現(xiàn)的問(wèn)題车猬。更改 DecorationView 的布局為從第一段中點(diǎn)到最后一段中點(diǎn)尝江,這時(shí)候 DecorationView 的布局在全程都是相同的阵难,問(wèn)題消失鞋喇,這下異常提示的信息能夠明白了吧。不過(guò)卧蜓,這里有多個(gè)值都在變化帐要,應(yīng)該用單值變化參照一下:只將 DecorationView 的起始位置設(shè)定為可視區(qū)域的起點(diǎn),其他值不變弥奸,同樣觸發(fā)這個(gè)異常榨惠,證明了猜測(cè)是對(duì)的。

總結(jié)下:如果有元素的布局是動(dòng)態(tài)變化的,那么確保在 top 或 bottom 位置不要再變化了赠橙,不然就會(huì)觸發(fā)這個(gè)異常耽装。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市期揪,隨后出現(xiàn)的幾起案子掉奄,更是在濱河造成了極大的恐慌,老刑警劉巖凤薛,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姓建,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缤苫,警方通過(guò)查閱死者的電腦和手機(jī)引瀑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榨馁,“玉大人,你說(shuō)我怎么就攤上這事帜矾∫沓妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵屡萤,是天一觀的道長(zhǎng)珍剑。 經(jīng)常有香客問(wèn)我,道長(zhǎng)死陆,這世上最難降的妖魔是什么招拙? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮措译,結(jié)果婚禮上别凤,老公的妹妹穿的比我還像新娘。我一直安慰自己领虹,他們只是感情好规哪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塌衰,像睡著了一般诉稍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上最疆,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天杯巨,我揣著相機(jī)與錄音,去河邊找鬼努酸。 笑死服爷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播层扶,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼箫章,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了镜会?” 一聲冷哼從身側(cè)響起檬寂,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎戳表,沒(méi)想到半個(gè)月后桶至,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匾旭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年镣屹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片价涝。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡女蜈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出色瘩,到底是詐尸還是另有隱情伪窖,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布居兆,位于F島的核電站覆山,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泥栖。R本人自食惡果不足惜簇宽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吧享。 院中可真熱鬧魏割,春花似錦、人聲如沸钢颂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甸陌。三九已至须揣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钱豁,已是汗流浹背耻卡。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牲尺,地道東北人卵酪。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓幌蚊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親溃卡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子溢豆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評(píng)論 1 92
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評(píng)論 25 707
  • 沒(méi)有工作了瘸羡,怎么辦有點(diǎn)難過(guò)啊
    毛毛最可愛閱讀 113評(píng)論 0 0
  • 這燦爛的生命在盡情的燃燒 穿過(guò)重重黑夜的帷幔 星星的寶珠 月亮的光華 也掩不住它的妖嬈 一切冰冷的清高 一切偽裝的...
    丁_香閱讀 397評(píng)論 34 40
  • ACT1 接吻 ……來(lái)る漩仙。 ジークフリード?キルヒアイスは、ベッドに橫たわり読んでいた本を閉じた犹赖。 正確には本など...
    波沙諾瓦閱讀 333評(píng)論 0 1