關於CollectionView的一些操作記錄

2022-06-09 08:09:09 字數 2546 閱讀 9803

通過重寫uicollectionviewflowlayout中的layoutattributesforelementsinrect方法可以讓uicollectionview顯示諸如瀑布流、水平流動布局等各種樣式的布局。其原理就是layoutattributesforelementsinrect方法本身返回的是uicollectionview中每個元素的屬性,屬性中就包含元素的frame資訊,通過修改frame值即可改變每個元素顯示的位置,這裡的元素型別分為headerfootercell,判斷元素型別可將不同元素進行區分。

現在我們可以看到抖音個人主頁在向上滑動時,第乙個section滑動到導航欄底部時便固定位置不再上移。實現這個效果就需要將第乙個section中的元素提取出來單獨處理frame值。之前也介紹了,第乙個section包含乙個header和乙個footerheader用於顯示使用者詳細資訊,footer則用於顯示切換"作品"和"喜歡"的tab欄,因此只需判斷是否是第乙個sectionheaderfooter並修改frame值即可實現固定效果,具體**如下:

//重寫layoutattributesforelementsinrect方法

- (nsarray *)layoutattributesforelementsinrect:(cgrect)rect

}//單獨新增上一步移除的header和footer,單獨新增是因為第一步只能獲取當前在螢幕rect中顯示的元素屬性,當第乙個sectioin移除螢幕便無法獲取header和footer,

這是需要單獨新增header和footer以及第二部單獨移除header和footer的原因。

[superarray addobject:[super layoutattributesforsupplementaryviewofkind:uicollectionelementkindsectionheader atindexpath:[nsindexpath indexpathforitem:0 insection:0]]];

[superarray addobject:[super layoutattributesforsupplementaryviewofkind:uicollectionelementkindsectionfooter atindexpath:[nsindexpath indexpathforitem:0 insection:0]]];

//迴圈當前獲取的元素

for (uicollectionviewlayoutattributes *attributes in superarray)

//設施header層級,保證header顯示時不被其它cell覆蓋

attributes.zindex = 5;

}//判斷是否為footer型別

if ([attributes.representedelementkind isequaltostring:uicollectionelementkindsectionfooter])

//設施footer層級,保證footer顯示時不被其它cell覆蓋,同時顯示在header之上

attributes.zindex = 10;}}

}//返回修改後的元素屬性

return [superarray copy];

}//重寫shouldinvalidatelayoutforboundschange方法

uiscrollviewbounce屬性設定為yes後,uiscrollview及其子類都會有在滑動到頂部和底部時出現彈簧拉伸效果,uicollectionviewuitableview都繼承自uiscrollview,所以也有bounce屬性。實現抖音個人主頁的拉伸效果的**片段如下:

//實現uiscrollviewdelegate中的scrollviewdidscroll方法

- (void)scrollviewdidscroll:(uiscrollview *)scrollview

} - (void)overscrollaction:(cgfloat) offsety

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...