我正在寻找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