UIImageView возвращает в исходное положение во время анимации - PullRequest
0 голосов
/ 02 декабря 2019

Я пытаюсь сделать анимацию для своего приложения. Я хочу переместить мое изображение в центр UIView (мой фон для анимации), а затем изменить высоту этого UIView (мой фон), и в этот момент возникает проблема - мое изображение переходит к оригиналупозиция. Вот мой код:

UIView.animate(withDuration: 0.3, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
            animationView.alpha = 1
        }) { (true) in
            UIView.animate(withDuration: 0.3, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
                infoImage.center.x = animationView.center.x
            }) { (true) in
                UIView.animate(withDuration: 1, delay: 0.5, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
                    animationView.frame = CGRect(x: 8, y: cellFrame.minY, width: cellFrame.width - 16, height: cellFrame.height + 200)
                }) { (true) in
                    print("completed")
                }
            }
        }

Первый блок анимации просто делает его видимым. Второй блок этой анимации перемещает изображение в центр. Третий блок увеличивает высоту UIVIew. Снимок экрана: Screenshot

1 Ответ

0 голосов
/ 02 декабря 2019

Это потому, что вы переопределяете значение x.

 UIView.animate(withDuration: 0.3, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
        animationView.alpha = 1
    }) { (true) in
        UIView.animate(withDuration: 0.3, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
            infoImage.center.x = animationView.center.x
        }) { (true) in
            UIView.animate(withDuration: 1, delay: 0.5, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
                animationView.frame = CGRect(x: animationView.center.x, y: cellFrame.minY, width: cellFrame.width - 16, height: cellFrame.height + 200)
            }) { (true) in
                print("completed")
            }
        }
    }
...