Я разрабатываю приложение для ios, используя Swift 4.0.В настоящее время у меня есть два контроллера вида, в которых у меня есть UIView
изображение волн шириной 1606 и высотой 628:
В первом контроллере вида волны сидятв нижней части экрана как таковой:
Когда я проведу вверх, у меня есть следующие данные, которые передаются через сеанс:
let waveHeight = hundred?.layer.presentation()?.position.y // Current height of waves. This is a global variable
let nextViewController = segue.destination as! Secondary // nextViewController is the segue destination
nextViewController.initialXPosition = nextXPosition // this will be the initial state of the waves in the secondary view controller. Also a global variable
Чтобы произошел плавный переход, мне нужно запустить волны во вторичном контроллере вида именно там, где он остановился в исходном контроллере вида.Продукт выглядит так:
https://giphy.com/gifs/2A4bUGE9UFUrG9RHPG
Двигаясь дальше, когда я провожу пальцем вверх, волны должны двигаться соответственно вверх (100 единиц).Для этого я использовал следующий метод:
UIView.animate(withDuration: 1, delay: 0, options: [.curveLinear], animations: {
self.hundred.transform = CGAffineTransform(translationX: 0, y: -100)
self.waveHeight = self.hundred?.layer.presentation()?.position.y
}, completion: nil)
В этот момент волны плавно перемещаются по экрану и увеличиваются на 100 единиц.
Отлично.
Теперь смахивание вниз - вот где возникают проблемы.Я просто хочу использовать тот же метод, чтобы плавно вернуться на начальный экран;сохранить текущую высоту волны, передать ее обратно через переход к контроллеру начального вида и заставить волны преобразоваться вниз на 100 единиц.
Это не работает.
По какой-то причине я не могусохранить Y-положение волн во втором контроллере вида.У меня настроены операторы печати, и независимо от того, где я нахожусь в анимации, когда я провожу пальцем вниз, консоль каждый раз возвращает одно и то же значение.Поэтому, когда я возвращаюсь к контроллеру начального вида, волны автоматически продвигаются к нижней части экрана.Это очень изменчиво.
Есть ли лучший способ передавать анимацию назад и вперед между контроллерами представления?