애니메이션이 시작하기 전과 후의 프로퍼티의 constraint 값의 차이를 두어서 효과를 줄 수 있다.
var leadingEdgeOffScreen: CGFloat = -1000 // 애니메이션 시작 전 constraint 값
var leadingEdgeOnScreen: CGFloat = 16 // 애니메이션 시작 후 constraint 값
// leading anchor 값을 변경하기 위해 변수로 설정
var titleLeadingAnchor: NSLayoutConstraint?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
animate()
}
titleLeadingAnchor = titleLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: leadingEdgeOffScreen)
titleLeadingAnchor?.isActive = true
private func animate() {
let animator1 = UIViewPropertyAnimator(duration: duration, curve: .easeInOut) {
self.titleLeadingAnchor?.constant = self.leadingEdgeOnScreen
// 레이아웃 업데이트 됐다고 알리는 것
self.view.layoutIfNeeded()
}
animator1.startAnimation()
}