Хорошо, я думаю, я понимаю, для чего вы собираетесь.
Прежде всего, аргумент длительности - это продолжительность каждой итерации анимации.Во-вторых, UIView.animate (...) не повторяет анимацию, пока вы не добавите параметр .repeat к аргументу параметров.
Таким образом, чтобы достичь чего-то более близкого к тому, что вы хотите, обновите свой код до:
func blinkScreen()
UIView.animate(withDuration: 1, delay: 0, options: [.repeat, .curveLinear], animations: {
self.imageV.transform = CGAffineTransform(translationX: 0, y: -10)
}) { _ in
self.imageV.transform = .identity
}
}
А если вы хотите анимировать движение как вверх, так и вниз, используйте параметр .autoreverse (и, возможно, .curveEaseInOut):
func blinkScreen()
UIView.animate(withDuration: 1, delay: 0, options: [.repeat, .autoreverse, .curveEaseInOut], animations: {
self.imageV.transform = CGAffineTransform(translationX: 0, y: -10)
}) { _ in
self.imageV.transform = .identity
}
}