최근 진행한 과제 전형 때 새롭게 배운 내용들을 정리하려고 한다
UIKit은 여전히 생소하지만 시장을 들여다보니 iOS 개발자로서 안 배울 수 없는 영역이라 느껴 열심히 해보려고 하고 있다,,
주로 UIKit이라고 하면 Auto Layout, Constraints와 같은 키워드가 같이 떠오른다
그러고 뷰 그리는 것을 타고타고 올라가면 Frame 과 Bound 라는 개념이 등장하고 CGRect도 있고,,

원래는 SnapKit 라이브러리 사용법을 작성하려다가 기초부터 보자 싶어서 UIKit 기초를 간단히 짚고 넘어가야겠다,,
UIKit (User Interface Kit)
UIKit은 iOS 어플리케이션에서 사용자 인터페이스(UI)를 구현하고 사용자 이벤트를 관리하는 프레임워크이다
선언형 UI가 데이터 상태에 따라 UI를 업데이트 한다면,
UIKit은 어떠한 이벤트가 발생했을 때 UI를 업데이트하는 이벤트 중심적 성격을 지닌다
또한, 모든 UI는 상속을 기반으로 하는데, 이는 뷰가 클래스임을 나타낸다.
즉, 뷰에 여러가지 기능을 담아두었다는 것을 의미하기도 한다
1. 사용자 이벤트 관리
touch, gesture 등의 액션을 처리한다
UIResponser 객체를 통해 변경사항을 추적하고 인터페이스를 업데이트한다
(View 계층구조 설명할 때도 잠깐 나왔던 UIResponser!)
2. UI 화면 구성
Object Library 혹은 UI Components 하위 클래스를 활용해 콘텐츠를 생성하며,
각종 UIView, Button, Label 등의 클래스를 포함한다
Storyboard
UIKit에서 화면을 구성하는 핵심 요소는 Storyboard(스토리보드) 이다
주로 캔버스에 비교하는데, UIKit이라는 도구를 활용해 그려내는 하나의 캔버스와도 같다
이때, 이전 포스팅에서 다룬 뷰 계층에 따라서
UIView가 있고 이를 window와 연결해주는 UIViewController가 존재한다,,
[iOS] View 계층구조
앱 생명주기와 AppDelegate SceneDelegate에 이어서 뷰 계층구조를 공부하고자 한다 window, scene, view 용어가 익숙하지만 스스로 설명하기 어렵다는 점을 인지하면서공부의 필요성을 느꼈다 ㅠㅠ용어 개
yunlibrary.tistory.com
Auto Layout
Apple 대부분의 플랫폼에서 활용하는 레이아웃 엔진으로
제약 조건(Constraints)에 따라 화면을 구성하는 뷰들의 크기와 위치를 동적으로 지정하는 것이다
뷰의 위치와 크기는 CGRect 타입인 Frame을 통해 지정할 수 있는데,
이 때는 화면의 크기와 무관하게 원점에서 주어진 값만큼의 거리로 그려버린다,,,
Auto Layout에서는 상대적인 제약조건을 걸어서 뷰의 위치나 크기를 정해준다!
이를 코드로 구현할 수도 있고, 스토리보드를 통해 설정해 줄 수 있는데
주로 현업에서 코드 즉 No Storyboard로 구현하고 constraints를 코드를 간략하게 작성할 수 있는 SnapKit을 도입한다
References
[UIKit 기초개념] https://iosdevlime.tistory.com/entry/iOSUIKit-UIKit과-Storyboard에-대한-이해-그리고-AutoLayout의-필요성
[SwiftUI vs UIKit] https://no-dev-nk.tistory.com/69
[Frame vs Bound] https://babbab2.tistory.com/44
[AutoLayout] https://babbab2.tistory.com/133