我正在尋找Xcode和Swift中的方式來檢測我的用戶是否已向下滾動應用程序。檢測是用戶已在iOS上滾動,然後更改視圖的顏色
如果他們有我想將應用程序頂部的視圖從透明轉爲黑色。如果用戶再次滾動到頂部,視圖從黑色變回透明。
這是在Swift和Xcode中可以實現的東西嗎?
在此先感謝! :)
UPDATE對不起,我忘了提及,我使用uiwebview,與我的視圖覆蓋它上面。在應用程序的頂部,它將是透明的,當我向下滾動webview時,它將變爲黑色。我仍然可以用相同的方式檢測卷軸嗎?
我正在尋找Xcode和Swift中的方式來檢測我的用戶是否已向下滾動應用程序。檢測是用戶已在iOS上滾動,然後更改視圖的顏色
如果他們有我想將應用程序頂部的視圖從透明轉爲黑色。如果用戶再次滾動到頂部,視圖從黑色變回透明。
這是在Swift和Xcode中可以實現的東西嗎?
在此先感謝! :)
UPDATE對不起,我忘了提及,我使用uiwebview,與我的視圖覆蓋它上面。在應用程序的頂部,它將是透明的,當我向下滾動webview時,它將變爲黑色。我仍然可以用相同的方式檢測卷軸嗎?
您可以通過讓控制器或其他類監聽UISCrollViewDelegate
協議來捕獲滾動事件。
特別是,查找scrollViewDidScroll
(滾動開始時)和scrollViewDidEndDecelerating
(滾動結束時)。
後者需要一些時間,因此您還可以檢查scrollViewDidScroll
中的contentOffset
以立即捕獲此情況。
如果您不知道如何更改視圖的backgroundColor
,請提出另一個問題。
你必須實現用於檢測滾動方向像波紋管滾動視圖的方法:
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
}
是有可能在迅速。您必須使用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
})
}
}
檢查這個帖子http://stackoverflow.com/questions/40667985/how-to-hide-the-navigation-bar-and-toolbar-as-scroll-down-swift-like-mybridge/40670196 #40670196 – Joe