iOS 개발을 하게 되면 화면에 보여지게 되는 요소를 표현하기 위해 다양한 UI 처리를 해야 한다.
화면 내 원하는 위치에 특정 뷰를 위치 시키는 방법은 여러 가지가 있다.
- frame 또는 bounds
- 코드베이스 AutoLayout
- 스토리보드를 활용한 AutoLayout
- SwiftUI
- SnapKit
- FelxLayout + PinLayout
- 기타 다양한 UI 라이브러리
먼저, SwiftUI에 관한 내용은 오늘 다룰 내용과 너무 멀기 때문에 제외하겠다.
SwiftUI에 관한 내용은 별도의 포스트에서 따로 다룰 예정이다.
남은 방법 중에서 실제 개발 시에 frame과 bounds 만을 사용해서 개발하는 경우는 거의 없을 것이다.
그 이유는 다양한 사이즈의 디바이스 화면을 대응하는 것에 불리하기 때문이다.
간단하게 뷰 하나를 그린다고 하면 대부분 AutoLayout을 고려할 것이다.
AutoLayout의 기본 개념에 관한 내용은 기회가 되면 다음에 따로 정리하도록 하겠다.
스토리보드를 사용해서 AutoLayout을 고려하는 것은 UI를 구성하는 동안 즉각적으로 화면의 구성이 눈에 보이기 때문에 편리하다는 장점이 있다.
하지만 스토리보드 자체의 버그나 무거움 등의 이유로 스토리보드를 사용하지 않기도 하고, 또 뷰컨트롤러의 코드 내에 AutoLayout과 관련된 로직이 존재하지 않기 때문에 혼란을 야기할 수도 있다.
따라서 큰 프로젝트를 다루는 현업에서는 코드베이스로 레이아웃을 많이 구성하는 것으로 파악된다.
하지만 애플에서 기본으로 제공하는 NSLayoutConstraint를 사용해서 코드베이스로 AutoLayout을 구성하는 방법은 굉장히 귀찮은 방식이다.
간단히 부모 뷰의 상하좌우에 꽉차는 뷰를 위치 시키기 위해서는 topAnchor, bottomAnchor, leadingAnchor, trailingAnchor를 모두 설정해야 하며, translatesAutoresizingMaskIntoConstrains 값을 false로 변경해야 한다.
하지만 SnapKit을 사용하면 경우에 따라 길게는 몇 줄, 짧으면 한 줄의 클로저만 포함해서 해당 작업을 끝낼 수 있다.
이것은 코드 작성의 편리함 뿐만 아니라 읽는 사람에게도 가독성의 이점이 있다.
다음 포스트에서는 이러한 SnapKit을 활용해서 하위 뷰를 위치시키는 예제를 다뤄보겠다.
'Swift > SnapKit' 카테고리의 다른 글
[SnapKit] SnapKit과 StackView (0) | 2024.01.08 |
---|---|
[SnapKit] 오토레이아웃 구현과 스냅킷 구현 (1) | 2024.01.08 |