如问题标题所述,是否可以仅针对一个方向在UIScrollView
中启用页面分页?
我有一个可以在x和y方向上滚动的UIScrollView
,但我只想让其中一个方向进行分页,这可能吗?
我所能想到的唯一解决方案是在第一个UIScrollView
中再放置另一个UIScrollView
,这是唯一的解决方案吗?
如问题标题所述,是否可以仅针对一个方向在UIScrollView
中启用页面分页?
我有一个可以在x和y方向上滚动的UIScrollView
,但我只想让其中一个方向进行分页,这可能吗?
我所能想到的唯一解决方案是在第一个UIScrollView
中再放置另一个UIScrollView
,这是唯一的解决方案吗?
UIScrollView
的scrollViewWillBeginDecelerating
代理方法。content offset
。content offset
的y
和上一次存储的content offset
的y
。如果当前的y
大于上一次存储的y
,则滚动方向为向上
;如果上一次存储的y
大于当前的y
,则方向为向下
。现在,如果你想在向上
方向上实现分页
效果,则在检测到向上
方向时,将新的content offset
设置给你的scrollview
。例如,如果当前的y
偏移量为0
,则将其设置为y+screenheight
。scrollView
的代理,代码可能如下所示:scrollView.delegate = self
然后
var lastOffsetY: CGFloat = 0
var lastOffsetX: CGFloat = 0
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y != lastOffsetY {
lastOffsetY = scrollView.contentOffset.y
scrollView.isPagingEnabled = false
} else {
scrollView.isPagingEnabled = true
}
if scrollView.contentOffset.x != lastOffsetX {
lastOffsetX = scrollView.contentOffset.x
scrollView.isPagingEnabled = true
} else {
scrollView.isPagingEnabled = false
}
}
这将使其仅在水平方向上可分页。对于垂直方向,只需翻转真/假值即可。