Подтвердить что ты не робот

Плавное перемещение contentoffset UIScrollView Swift

Я хотел бы настроить contentOffset моего scrollview программно, когда contentOffset находится между двумя точками (см. рисунок ниже) с помощью Swift.

Проблема заключается в том, что я хотел бы добавить плавный переход для перемещения, но я не нашел документацию для этого. Я попытался сделать цикл, чтобы постепенно уменьшить смещение содержимого, но результат не так хорош.

В этом примере, если смещение содержимого меньше 150 px в конце прокрутки, оно гладко (продолжительность анимации будет 1 сек) до точки со смещением, равным 100. До 150 пикселей, он достигает 200px.

Если вы можете предоставить мне указания (документация или быстрый пример), что делать, было бы здорово:) Спасибо!

введите описание изображения здесь

4b9b3361

Ответ 1

Вы можете использовать UIView.animations

  func goToPoint() {
    dispatch_async(dispatch_get_main_queue()) {
      UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
        self.scrollView.contentOffset.x = 200
        }, completion: nil)
    }
  }

Ответ 2

Вот версия кода fatihyildizhan версии Swift 3.

       DispatchQueue.main.async {
        UIView.animate(withDuration: 0.2, delay: 0, options: UIViewAnimationOptions.curveEaseOut, animations: {
            self.myScrollView.contentOffset.x = CGFloat(startingPointForView)
            }, completion: nil)
    }