У меня такая ситуация:
Я программно создаю ячейки (UIView) с меткой внутри и правильно устанавливаю 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<CGPoint>) {
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
}
может быть что-то вроде этого: (вам нужно добавить некоторые проверки) сделайте класс делегата для просмотра прокрутки (UIScrollViewDelegate)
теперь добавьте эту функцию в свой UIScrollViewDelegate
myScrollView.delegate = instanceOfUIScrollViewDelegate;
func scrollViewDidScroll(scrollView: UIScrollView) {
scrollView.contentOffset.y+=80;
}