Transform
Transform (변형) 은 크게 다음 3가지로 분류할 수 있다.
1. 회전 (Rotation)
2. 확대/축소 (Scale)
3. 옮김 (Translation)
원하는 변형 방법을 Fade 효과와 함께 사용할 수 있다. 아래 예시에서는 Translation 을 이용해본다.
Label 을 이동(Translation)시키며 fade 효과로 전환하기
1. 보조 라벨(변경된 텍스트를 가진)을 투명하게 하여 기존 라벨 위치에 놓은 뒤 옆이나 위 아래로 translation 한다.
2. 기존의 라벨의 alpha 값을 0으로 바꾸며(Fade out) 보조 라벨이 translation 된 위치로 이동한다.
3. 보조 라벨을 Fade in하며 원래의 위치 (기존 라벨이 있던 위치) 로 옮긴다.
4. 기존 라벨을 보조 라벨의 텍스트로 갱신하고 원래의 자리에 위치시킨다. (보조 라벨은 제거한다.)
func move(label: UILabel, text: String, offset: CGPoint) {
// Create & set up temp label.
let tempLabel = duplicate(label) // duplicate function duplicates the label's everything.
tempLabel.text = text
tempLabel.transform = .init(translationX: offset.x, y: offset.y)
tempLabel.alpha = 0
view.addSubview(tempLabel)
UIView.animate(
withDuration: 0.5, delay: 0,
options: .curveEaseIn,
animations: {
// Fade out and translate the real label.
label.transform = .init(translationX: offset.x, y: offset.y)
label.alpha = 0
// Fade in and translate the temp label.
tempLabel.transform = .identity
tempLabel.alpha = 1
},
completion: { _ in
// Update the real label and remove the temp label.
label.text = text
label.alpha = 1
label.transform = .identity
tempLabel.removeFromSuperview()
}
)
}
'iOS 개발 > UIKit' 카테고리의 다른 글
[iOS/UIKit] UIKit 개발 방법들 (Storyboard, NIBs, Programmatic) (0) | 2021.09.05 |
---|---|
[iOS/UIKit] Animation 효과로 ViewController 전환하기 (0) | 2021.04.08 |
[iOS/UIKit] Keyframe Animation 으로 연속적인 변화를 Animate 하기 (0) | 2021.04.08 |
[iOS/UIKit] Fade 효과로 화면 전환하기 (0) | 2021.04.01 |