Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리팩토링
- UICollectionView
- collectionview
- clean architecture
- uiscrollview
- combine
- swift documentation
- Protocol
- Observable
- SWIFT
- uitableview
- 클린 코드
- ribs
- tableView
- 리펙토링
- HIG
- swiftUI
- 애니메이션
- 리펙터링
- RxCocoa
- ios
- Human interface guide
- 스위프트
- UITextView
- rxswift
- Clean Code
- map
- Refactoring
- Xcode
- MVVM
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 1. UIViewPropertyAnimator, AnimationStates - 개념 본문
iOS 응용 (swift)
[iOS - swift] 1. UIViewPropertyAnimator, AnimationStates - 개념
jake-kim 2022. 3. 27. 22:461. UIViewPropertyAnimator, AnimationStates - 개념
2. UIViewPropertyAnimator, AnimationStates - fractionComplete, interactive animation (상호작용 애니메이션)
UIViewPropertyAnimator
- UIView.animate와 다르게 시작, 종료, 일시중지, 정지, 완료가 가능
- 애니메이션 진행률과 같은 현재 상태에 대한 값도 알 수 있는 장점이 존재
- iOS 10+
- "프로퍼티 애니메이터"로 이름이 지어진 이유: 시작, 중지, 종료등을 컨트롤 할 수 있는 애니메이션 상태를 갖고 있기 때문
애니메이션 상태
- 새로 생성된 인스턴스는 inactive상태에서 시작
- 애니메이션을 마친 인스턴스도 inactive 상태로 돌아감
- 메서드를 호출하면 active 상태로 변경
- 중지하면 stopped 상태로 변경
UIViewProperyAnimator 사용 방법
- 프로퍼티 선언 - 언제든지 취소하고 재개, 일시중지 할 수 있도록 전역에 선언
// 1. 프로퍼티 선언
var animator: UIViewPropertyAnimator?
- 프로퍼티 초기화
// 2. 프러퍼티 초기화
self.animator = UIViewPropertyAnimator(
duration: 3.0,
curve: .easeOut,
animations: { self.myView.transform = .init(scaleX: 2.0, y: 1.3) }
)
- 애니메이션 completion 지정
// 3. completion
self.animator?.addCompletion { position in
switch position {
case .start:
print("start")
case .end:
print("end")
case .current:
print("current")
@unknown default:
fatalError()
}
}
- 프로퍼티에 접근해서 애니메이션 컨트롤
@objc private func didTapStartButton() {
// 애니메이션 시작 or 재개
self.animator?.startAnimation()
}
@objc private func didTapPauseButton() {
self.animator?.pauseAnimation()
}
@objc private func didTapStopButton() {
self.animator?.stopAnimation(true)
}
@objc private func didTapAddButton() {
self.animator?.addAnimations {
self.myView.transform = .init(scaleX: 0.5, y: 0.5)
}
}
* 전체 코드: https://github.com/JK0369/ExPropertyAnimator
* 참고
https://developer.apple.com/documentation/uikit/uiviewanimating
'iOS 응용 (swift)' 카테고리의 다른 글
Comments