2017-04-03 73 views
0

我正在尋找Xcode和Swift中的方式來檢測我的用戶是否已向下滾動應用程序。檢測是用戶已在iOS上滾動,然後更改視圖的顏色

如果他們有我想將應用程序頂部的視圖從透明轉爲黑色。如果用戶再次滾動到頂部,視圖從黑色變回透明。

這是在Swift和Xcode中可以實現的東西嗎?

在此先感謝! :)

UPDATE對不起,我忘了提及,我使用uiwebview,與我的視圖覆蓋它上面。在應用程序的頂部,它將是透明的,當我向下滾動webview時,它將變爲黑色。我仍然可以用相同的方式檢測卷軸嗎?

+0

檢查這個帖子http://stackoverflow.com/questions/40667985/how-to-hide-the-navigation-bar-and-toolbar-as-scroll-down-swift-like-mybridge/40670196 #40670196 – Joe

回答

0

您可以通過讓控制器或其他類監聽UISCrollViewDelegate協議來捕獲滾動事件。

特別是,查找scrollViewDidScroll(滾動開始時)和scrollViewDidEndDecelerating(滾動結束時)。

後者需要一些時間,因此您還可以檢查scrollViewDidScroll中的contentOffset以立即捕獲此情況。

如果您不知道如何更改視圖的backgroundColor,請提出另一個問題。

0

你必須實現用於檢測滾動方向像波紋管滾動視圖的方法:

private var lastContentOffset: CGFloat = 0 

    func scrollViewDidScroll(scrollView: UIScrollView!) { 
     if (self.lastContentOffset > scrollView.contentOffset.y) { 
      // move up 
     } 
     else if (self.lastContentOffset < scrollView.contentOffset.y) { 
      // move down 
     } 

     // update the new position 
     self.lastContentOffset = scrollView.contentOffset.y 
    } 

參考:How to get UIScrollView vertical direction in Swift?

0

是有可能在迅速。您必須使用UIScrollViewDelegate方法來控制滾動。

func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { 

    print("scrollViewWillBeginDecelerating") 

    let actualPosition = scrollView.panGestureRecognizer.translation(in: scrollView.superview) 
    if (actualPosition.y > 0){ 
     // Dragging down 

     UIView.animate(withDuration: 3, animations: { 
      //Change the color of view 
     }) 
    }else{ 
     // Dragging up 

     UIView.animate(withDuration: 3, animations: { 
      //Change the color of view 
     }) 
    } 
}