簡單實現(xiàn)tableViewHeaderView上的常見動畫效果 -- Swift



BG :

最近在研究一些APP的過程中 , 發(fā)現(xiàn)很多APP都會在tableViewHeaderView上做一些交互式的動畫效果 , 這些簡單的交互式的動畫能明顯的增強用戶在滑動tableView時的體驗 . 所以趁著最近工作不忙 , 著手用一直在學的swift寫了一個集成四種較為常見的交互效果的PanAnimationTableView:

幾種效果分別為:

.Follow : 即普通的headerView跟隨效果

.FollowAndStretch : 普通跟隨效果 , 當往下滑動tableView時 , 會有縮放效果

.Hold : 固定headerView

.HoldAndStretch : 固定headerView , 當往下滑動tableView時 , 會有縮放效果


demo項目的下載地址 : PanAnimationTableView ----- 戳我?


思路原理

由于tableView無法通過直接改變headerView的frame來改變headerView的顯示效果 , 想要實現(xiàn)交互式的動畫效果 , 我的想法是傳入一個要顯示的topView? , 根據(jù)settingInfo的actualHeight(顯示高度)來創(chuàng)建一個透明的實際headerView , 然后再根據(jù)actualHeight 和 hiddenHeight(初始狀態(tài)需要隱藏的高度)來創(chuàng)建當做headerView用來顯示的topView (即tableViewHeaderView) ,
然后便可以根據(jù)tableView的contentOffSet的y值變化改變topView的frame , 從而做出對應的動畫效果

關鍵代碼 :

scrollViewDidScroll: 根據(jù)設置的animationType進行不同處理

以hold和holdAndStretch為例

項目使用 :

定義tableView , 設置滾動到topView最底部的回調函數(shù) (可不設置) , 設置settingInfo的animationType (動畫類型 , default -> holdAndStretch)? ;? actualHeight (始終顯示的高度 , default -> 150)? ;? hiddenHeight (拉伸才可顯示的高度 , default -> 40) ;? stretchType (拉伸效果的類型 , default -> SameRate(比例拉伸))

部分項目需要在會變化的headerView上添加不變固定的view , 而直接在topView上添加view會導致view也會發(fā)生變化 , 添加view應調用addContentView方法

小結 :

這種交互式的tableViewHeaderView效果實現(xiàn)起來并不復雜 , 只是簡單的通過contentOffSet.y計算topView的frame , 但由于項目中頁面繁多 , 所需要的實際效果多樣 , 將其中的交互邏輯抽象封裝起來還是十分有必要的 . 這樣我們在開發(fā)具體頁面的時候 , 只需要關注交互效果的類型就可以了 ~~ .? 當然 , 具體效果的種類千千萬 , 我這邊只是列舉了我個人認為比較常見的四種類型 , 以后如果遇到新的項目需求或看到別的app中比較好的效果時 , 我會再更新這個demo的 ~


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,753評論 4 61
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 26,317評論 7 249
  • 剛加入貓群,每天的晨讀材料都要寫感悟,那時覺得挺新穎,也很上心。可是過了兩周后,忽然覺得這成了一種負擔,感覺沒什么...
    A一路花開閱讀 179評論 1 3
  • 1.傳入的參數(shù)數(shù)目不確定時(argument數(shù)目不確定,使用apply) 如果改為console.log.call...
    愛吃的根號三閱讀 533評論 0 51
  • 今天在學習學說集時,很認同賴老師的一句:想要培養(yǎng)佳佳這樣的孩子,首先要培養(yǎng)像佳佳爸爸媽媽這樣的父母。很多時候,我們...
    小元子zz閱讀 199評論 0 1

友情鏈接更多精彩內容