Я запускаю этот код...
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
CGAffineTransform settingsTransform = CGAffineTransformMakeTranslation(self.settingsView.frame.size.width, 0);
CGAffineTransform speedTransform = CGAffineTransformMakeTranslation(-self.speedView.frame.size.width, 0);
self.settingsView.transform = settingsTransform;
self.speedView.transform = speedTransform;
} completion:nil];
Но когда он запускает представления, перепрыгивайте половину преобразования в противоположном направлении, прежде чем сдвигать половину позиции в правильном направлении.
Я замедлял продолжительность анимации до 5 секунд, но начальный прыжок мгновенно и половина преобразования в неправильном направлении.
Когда я вернусь назад, используя этот код...
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.settingsView.transform = CGAffineTransformIdentity;
self.speedView.transform = CGAffineTransformIdentity;
} completion:nil];
Он делает то же самое.
В результате конечное движение составляет половину желаемого преобразования, когда оно сначала скачет половину преобразования в неправильном направлении.
Я действительно не могу понять, почему это происходит?
Любые идеи.
:: EDIT::
Устранение некоторой возможной двусмысленности.
Я не пытаюсь вернуть эти взгляды туда, где они есть. Представления, которые я анимация, похожи на панель управления на краю экрана. Когда пользователь нажимает "идти" на вид, затем выдвигается с пути. Когда пользователь нажимает "стоп", панели возвращаются назад в представление.
По крайней мере, они привыкли. Поскольку включение автоматической компоновки (что мне нужно для других частей приложения), я не могу просто изменить фрейм представлений, поэтому я пошел по пути преобразования.
Этот эффект можно увидеть, вставив представление в контроллер просмотра и кнопку для запуска анимации.
Спасибо