????做iOS項目必然會使用到UIScrollView,當然我是把其子類UITableView和UICollectionView都當做UIScrollView來看待來處理其scrollViewDidScroll代理事件瞧柔;
? ? 講究體驗的項目頁面大概會將導航做成顯隱動態(tài)展示,這種處理小編是在scrollViewDidScroll中睦裳,監(jiān)控contentOffset.y的值造锅,根據(jù)UED的動效設計,在固定的位置廉邑,將導航顯示出來哥蔚。但顯示導航時,避免表格上cell展示有問題蛛蒙,有些會改變表格的y軸坐標糙箍,重新布局frame;有些使用contentInset牵祟,調整展示區(qū)域的大小深夯。其中contentInset是當前表格能夠展示的區(qū)域的偏移項,其四個值按照上左下右來限制诺苹。
? ? 大部分項目中有表格展示的頁面咕晋,幾乎都有置頂功能,這里使用了contentOffset收奔,并設置動畫掌呜,效果美觀簡單;小編做的項目中有個頁面是在表格中的cell里面放了幾個并排的網(wǎng)格坪哄,考慮到左右滑動會出現(xiàn)卡頓的體驗問題质蕉,cell里面的網(wǎng)格本身沒有做重用势篡,有多少分類就創(chuàng)建多少網(wǎng)格。然而進行上下滑動時模暗,就需要解決手勢透傳問題禁悠,和滑動子視圖網(wǎng)格,父視圖表格固定位置汰蓉。手勢透傳小編直接在父視圖表格里面實現(xiàn)了shouldRecognizeSimultaneouslyWithGestureRecognizer代理绷蹲,監(jiān)控是否有子視圖手勢滑動,并設置其值顾孽;
? ? 在scrollViewDidScroll方法中通過設置contentOffset祝钢,來固定父視圖表格的展示位置,但這里會出現(xiàn)個循環(huán)調用的問題若厚,UIScrollView本身或子視圖拦英,設置contentOffset時,會調用scrollViewDidScroll代理方法测秸,所以在scrollViewDidScroll方法中要設置很嚴謹?shù)呐袛嗍垢敢晥D表格盡量少設置contentOffset疤估。小編百度后發(fā)現(xiàn)使用bounds也能實現(xiàn)這個功能,這兩者的區(qū)別:contentOffset是讓子視圖偏移展示霎冯,bounds是父視圖本身偏移到固定位置展示铃拇。