본문 바로가기

iOS 개발/UIKit

(5)
[iOS/UIKit] UIKit 개발 방법들 (Storyboard, NIBs, Programmatic) Storyboard 간단한 프로젝트에 대해서 빠르고 직관적으로 작성할 수 있지만 큰 스케일의 프로젝트에는 부적합하다. 여러 개발자가 작업할 때 Merge Conflict 다루기 힘들기 때문이다. 또한, 하나의 View Controller 만 쏙 빼내서 재활용하기 힘들다. 의존성 관계의 View Controller 들과 모두 함께 움직여야 한다. NIBs(XIBs) 단일 View 를 빠르게 작성하고 필요에 따라 View Controller 에 붙인다. 즉, 단일 View 에 대해 재사용이 용이하다. Lazy Loading 방식으로 작동하므로 Memory Efficiency 는 좋지만, 이에 따른 Performance Latency 가 있을 수도 있다. Programmatic UI Storyboard, NI..
[iOS/UIKit] Animation 효과로 ViewController 전환하기 ViewController 전환을 Animate 시킬 때 생각해야 할 것 ? Animation 을 통해 ViewController 를 전환하려는 목적을 잘 생각해보자. 많은 경우에, 전환되는 화면들의 관계성을 사용자가 잘 이해하도록 보여주기 위함이다. 예를 들어, 아이폰의 달력 앱에서 열두 달이 놓여 있을 때 특정 달을 누르면 전체 화면이 해당 달 위치로 좁혀 들어가며 해당 달의 날짜들이 확대되어 보이는 화면으로 전환된다. 이런 방식의 화면 전환은 사용자가 한 해의 전체 달 중 어떤 특정한 달의 정보를 얻기 위해 이동했다는 가시적인 이해를 제공하여 앱을 사용하는 어떤 목적과 과정에 대해 현재 어느 부분에 위치해 있다는 느낌을 줄 수 있다. View 전환을 준비하기 위한 질문들 어떤 View 가 Anima..
[iOS/UIKit] Keyframe Animation 으로 연속적인 변화를 Animate 하기 UIView.animateKeyframes 한 개 또는 여러개의 Keyframe 으로 구성된 Animation 을 동작시킨다. func changeSummary(to summaryText: String) { UIView.animateKeyframes( withDuration: 1.0, delay: 0, animations: { [summary = self.summary!] in // Move label upward. UIView.addKeyframe( withRelativeStartTime: 0, relativeDuration: 0.5, animations: { summary.center.y -= 100 } ) // Move label down. UIView.addKeyframe( withRelative..
[iOS/UIKit] Fade 효과로 Transform Animation 구현하기 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...
[iOS/UIKit] Fade 효과로 화면 전환하기 Fade 효과로 화면 전환 1. 바꿀 화면을 얹은 View 를 생성하고 alpha 값을 0 (투명한 화면이 된다.) 으로 하여 현재 화면에 올린다. 2. withDuration 을 조절해 천천히 alpha 값을 1로 만든다. 3. 현재 화면을 바꿀 화면으로 바꾼 뒤 올린 View를 제거한다. func fade(to image: UIImage, showEffects: Bool) { // Create & Set up temp view. let tempView = UIImageView(frame: background.frame) tempView.image = image tempView.alpha = 0 background.superview!.insertSubview(tempView, aboveSubview: ..