首頁功能添加(三)

   接上一篇,pageTitleView和pageContentView內部的邏輯功能已經實現,然後是相互之間的交互了。

  首先是點擊上方標題欄實現對應的下方視圖切換,這裏使用的代理協議

      wKioL1jT-bWT1E7ZAANYUbSKF8U590.jpg-wh_50

   如上所示,在點擊事件中將得到的當前標題下標傳出去,在HomeVC裏遵循協議,並在協議方法中拿到點擊的標題下標,此時可以對pageContentView進行處理,讓其滾動到相應的視圖。(因爲內部使用的是collectView,所以既可以使用setContentOffset的方法,也可以使用scrollToItem的方法)

   然後是滑動pageContentView,使上方的PageTitleView發生對應聯動。同樣使用代理協議,因爲collectView本身也是滾動視圖,所以直接檢測它的滾動視圖的代理方法即可。這裏要分兩種情況,左滑和右滑,如下是判斷的方法

     wKiom1jT_D3xu2tEAAsZ-9RbxO4332.jpg-wh_50

  其中sourceIndex爲原始視圖的下標,targetIndex爲將要滑到的視圖下標,

progress爲滑動比例,將三個參數使用代理傳到代理處。代理調用其代理方法,再使用這些參數來改變pageTitleView的標題的顯示效果。

     wKioL1jT_UmD8qGfAArGiCucLEc227.jpg-wh_50

  以上顏色的漸變會比較複雜,需要理解這裏設置的宏,當然,還有注意上圖的最後一句代碼,點擊完後要把目標視圖的下標也賦值給當前要高亮的標題喲~

     wKioL1jT_fKCoX02AA-LQLfjfRQ652.jpg-wh_50

  這裏需要提醒一下:在pageTitleView上的某個標題時,下方的pageContentView聯動使自身的collectView滾動起來,這裏因爲我們在滾動視圖的代理裏改變過pageTitleView的一些參數,所以這裏會在此調用,也就是說,一次點擊還引起了一次手勢的滑動事件,這會影響視圖變化的流暢性。爲了解決這個問題,需要設置一個bool值變量來進行檢測。

  當用手點擊pageTitleView上的標題時,這裏調用的是pageContentView暴露在外面的方法,所以在這裏將這個bool值設爲true,代表阻止,當在滾動視圖代理的didscroll方法被調用時做一下判斷,如果這個bool值爲true則直接return。反之,如果scrollViewWillBeginDragging被調用,則設置爲false,因爲非手勢是不會調用這個方法的。

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章