iOS 一種tableView的滑動效果

record.gif

最近項目中有個頁面效果,具體如下
1.類似tableView上添加CustomView,當tableView頂部停留時時,CustomView可以響應事件
2.當tableView滑動時,遮蓋住CustomView,同時CustomView不能響應事件

初步的設計方案是tableView設置contentInset,CustomView添加到tableView的contentInset處,這樣布局存在的問題是CustomView會與tableView一起滑動,不滿足需求

重新設計的方案是控制器的view上依次添加CustomView、tableView,tableView設置contentInset并將tableView的背景色設為透明,接下來就是對一些UIScrollViewDelegate回調方法的處理

在處理一系列回調方法中,有一個拖動手勢問題讓我糾結了一陣子:慢慢滑動tableView和以一個初速度滑動tableView,下面對兩種拖動手勢做文字上的簡要描述:
方式一 --- 慢慢滑動tableView:是指在手指不離開屏幕的情況下,拖動tableView
方式二 --- 以一個初速度滑動tableView:向屏幕上方或屏幕下方以一個初速度滑動屏幕,并且手指離開屏幕

因為這兩種滑動所走的回調不同,所以需要分別處理

如何區(qū)分這兩種方式的手勢,通過- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate的decelerate。該回調僅僅處理方式一的手勢,可以通過BOOL值decelerate去區(qū)分,YES為方式二,NO為方式一。

因為回調方法中有些自定義的屬性需要配合整個代碼去理解,所以這里只放出一部分關聯(lián)性不強的代碼片段

// 控制導航欄和HeaderView的灰度顯示
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
    CGFloat offsetY = scrollView.contentOffset.y;
    CGFloat scale = (offsetY + self.headerViewH) / (self.headerViewH+10);
    if (scale > 0.6) {
        scale = 0.6;
    }
    self.hudView.alpha = scale;
    
}

具體的每個回調方法的處理細節(jié)請戳到:https://github.com/TMMMMMS/TableViewHudEffect.git,demo中每個回調方法都有明確注釋,方便各位看官理解

其實自我感覺這種實現(xiàn)方式還是顯得有些笨拙,個人還是更希望有大神提供給我新的實現(xiàn)思路,與我多多交流 ~ o.0

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AGI閱讀 16,003評論 3 119
  • 那些傷心的人傷心的事,不過是破繭成蝶的涅槃重生。 沒什么好委屈的。固步自封井底之蛙怨不得別人云云,格局太小眼界太窄...
    upupupupupup閱讀 213評論 0 0
  • 性能測試,準備測試數(shù)據(jù)是一個重要的環(huán)節(jié)。 針對數(shù)據(jù)準備我們有常用的以下幾種方式: 從生產的備用庫里面同步下來。 自...
    果果醬ya閱讀 3,240評論 2 10
  • 人在不清醒的時候 記著三分之一的夢 醒時就在一片愕然 在鏡子的縫中溜走 蟬在漸涼的秋風里 瞥見了三分之一的冬 于是...
    晚歸的風啊閱讀 387評論 10 33
  • Spring 是一個開源的,用來簡化企業(yè)級應用開發(fā)的框架 Spring 是一個開源的,用來簡化企業(yè)級應用開發(fā)的框架...
    風吹草揚閱讀 303評論 0 0