iOS只为一个方向启用UIScrollView分页

时间:2016-09-19 10:06:38

标签: ios iphone swift uiscrollview

正如问题标题所示,是否可以仅在一个方向上启用UIScrollView中的分页?

我有一个UIScrollView在x和y方向滚动,但我只想要一个方向分页,这可能吗?

我脑海中唯一的解决方案是在第一个内部使用另一个UIScrollView,这是唯一的解决方案吗?

2 个答案:

答案 0 :(得分:0)

您应该实施scrollViewWillBeginDecelerating delegate method of UIScrollview`。

您应该在当前存储当前content offset

然后比较您的滚动浏览的当前y的{​​{1}}和最后与content offset存储的内容。如果当前content offset更大,则滚动方向为y,如果上次存储的up side更大,则方向为y。现在,如果您希望down side仅对paging产生影响,那么当您检测到up direction将新up direction设置为content offset时。例如,如果当前scrollview偏移量为y,则将其设置为0

您可以参考this so post获取一些指导来管理我所说的内容!

答案 1 :(得分:0)

这是我解决的方法:

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
    }
}

这只会使其在水平方向上可分页。对于垂直方向,只需翻转true / false值即可。