UIScrollView按偏移滚动

我有这种情况:

  • 一个适合所有屏幕的scrollView
  • scrollView中的N“cells”,每个都包含一个标签
  • 每个细胞高度为80px
  • 固定绿色面具(UIView)

我以编程方式创建带有标签的单元格(UIView)并正确设置scrollView的contentSize。

我知道

scrollView.setContentOffset(CGPoint(x: 0, y: 80.0), animated: true) 

移动滚动视图80。

如何“覆盖”滚动视图行为以始终滚动80? 我想要的是一种挑选行为..这可能吗?

在此处输入图像描述

布局更改时,可以使用以下方法

 func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() myScrollView.contentOffset.y += 80 } 

没有人正确回答这个问题,所以我经常以自己的方式解决:

 let viewHeight: CGFloat = 80.0 func scrollViewWillBeginDragging(scrollView: UIScrollView) { startContentOffsetY = scrollView.contentOffset.y } func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) { targetContentOffsetY = targetContentOffset.memory.y if startContentOffsetY - targetContentOffsetY < 0 { scrollDirection = ScrollDirection.Bottom.rawValue } else { scrollDirection = ScrollDirection.Top.rawValue } let gap = targetContentOffsetY % viewHeight var offset: CGFloat = 0.0 if (targetContentOffsetY - gap) % viewHeight == 0 { offset = -gap * scrollDirection } else { offset = gap * scrollDirection } let newTarget = targetContentOffsetY + (offset * scrollDirection) targetContentOffset.memory.y = newTarget } 

可能是这样的:(你需要添加一些validation)为你的滚动视图创建一个委托类(UIScrollViewDelegate)

现在在UIScrollViewDelegate中添加此函数

 myScrollView.delegate = instanceOfUIScrollViewDelegate; func scrollViewDidScroll(scrollView: UIScrollView) { scrollView.contentOffset.y+=80; }