大家好鲁僚,本人是一名普通iOS程序猿,但是最近項目暫時沒有什么大的變動容达,比較閑古涧。總想做點什么可是又不知道從何做起花盐,想來想去注冊簡書已經(jīng)很長時間了但是從來沒寫過文章羡滑,覺得是時候做點一點點的改變了。于是算芯。柒昏。。熙揍。职祷。
不瞎扯了,進入正題,今天看到汽車之家app的首頁導航下部有個標題模塊的滑動效果做的看著挺有意思的有梆,所以就想著自己也實現(xiàn)一個是尖。順便鞏固一下自己的知識,先看代碼實現(xiàn)的效果:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?github源碼鏈接
下面來分析一下實現(xiàn)此效果的知識重點泥耀,便于以后自己理解和復習:
1.選中某個標題時饺汹,標題的scrollview容器自動滑動到中間位置,切當是最左邊后者最右邊的標題時不滑動爆袍。
中間臨界點的判斷就是頂部容器寬度的中心位置首繁,而決定標題控件標題控件是否滑動是有:標題控件的中心點的x坐標、容器的內(nèi)容寬度(即scroview的contentSize.width)和容器的寬度的中心位置共同決定的陨囊,一共分為三種情況:
(1) ?選中標題控件的中心X -?容器scroview的寬度/2 > 0 且?容器scroview的內(nèi)容寬度 -???標題控件的中心X >0? 此時容器scroview進行滑動弦疮,且scroview上的選中標題控件滑動到中心位置。
(2) 選中標題控件的中心X <??容器scroview的寬度/2 ? ?此時容器scroview進行滑動蜘醋,且容器scroview的偏移量X為0胁塞。
(3)選中標題控件的中心X >容器的寬度/2 且?容器的內(nèi)容寬度 -???標題控件的中心X <0,此時容器scroview進行滑動,且容器scroview的偏移量X為:?容器scroview內(nèi)容寬度 -?容器scroview的寬度/2,即?容器scroview滑動到最右端压语。
實際的示例代碼:
2.滑動底部的內(nèi)容容器的scrollview時啸罢,標題scrollview容器底部的線條跟著滑動的方向做動畫。
由于需要知道底部內(nèi)容scroview的滑動方向胎食,這里放棄使用scroview的代理方法扰才,而是利用scroview上面自帶的滑動手勢添加target,利用CGPoint來判斷方向和滑動的距離從而控制劃線的方向和線的漸變長度厕怜。
滑動的邏輯代碼為:
劃線的邏輯代碼為: