이미지 출처 : https://medium.com/picsart-engineering/4-ways-of-ui-development-in-ios-c7841ee22dbd
어쩌다 보니 SwiftUI로 IOS앱을 만들기 시작했다. 만들던 앱을 얼추 마무리 하고 ARKit를 이용해 뭔가 재밌는 것을 만들어 봐야지 싶어서 IOS 앱 개발을 좀 더 알아봤다. 그런데 맙소사! UI를 만드는 방법이 무려 네 가지나 있는 것이었다!
그래서 일단 한 번 해보자 싶어서 SwiftUI가 아닌 Storyboard로 프로잭트를 시작했다.
스토리보드를 보자마자 막막해졌다. 이걸로 뭘 어쩌라는 건지 답답한 마음에 이것저것 찾아보니, 나만 이런 답답함을 느끼는게 아니었던 것이었다! 스토리보드를 안쓰고도 충분히 IOS 12이하의 운영체제에서도 돌아가는 앱을 만들 수 있다는 것이다!
IOS UI 개발 네 가지 방법
- Storyboard
- Programmatic way(code base)
- NIB
- SwiftUI
Storyboard
GUI로 UI작업을 할 수 있게 되어있다. 그래서 바로바로 UI의 모습을 확인하면서 작업할 수 있다. 요상한 선을 이리 저리 이어서 화면간 네비게이션을 할 수 있게 되어있는 것 같다(안써봄).
장점
- 입문 진입장벽이 낮다고 한다.
- 바로바로 볼 수 있기 떄문에 코드보다 직관적인 UI작업을 할 수 있다고 한다.
- 오토-레이아웃(auto-layout)이라는 기능을 편리하게 사용할 수 있다.
단점
- 복잡한 XML 파일로 변환되기 때문에 재사용하기가 어렵다.
- 협업 시 git merge conflict를 자주 일으킨다. 때문에 스토리보드로 협업 시에는 또 다른 대책을 세워야 한다.
- 데이터 흐름에 관한 통제는 스토리보드로 할 수 없다.
- 가독성이 떨어진다.
NIB
이번에 알게 된 방법인데, .xib 파일로 UI를 만들고 파일마다 하나의 화면 요소를 담당하는 뭐 그런거 같다.
장점
- 안드로이드의 XML + Activity 방식과 IOS의 XIB + Controller 방식이 비슷해서 안드로이드 개발자들이 쉽게 이해할 수 있다.
- 분리 가능한 XIB파일로 그냥 UI builder보다 현지화에 유리하다고 한다.
- 메모리에 lazy하게 로딩되므로 필요할 때 로딩되어 메모리를 덜 사용한다.
- 스토리보드처럼 UI를 바로바로 볼 수 있다.
단점
- 동적인 자료와 함께 사용하면 안된다고 한다.
- 스토리보드처럼 merge conflict문제가 있다고 한다.
- lazy 로딩 방식이기 때문에 화면을 그릴 때마다 디스크에서 메모리로 필요한 자료를 올려야 하므로 코드베이스 보다 화면을 그리는게 느리다고 한다.
- 스토리보드처럼 복잡한 XML로 변환되어 깃에 저장된다.
Programmatic way(Custom coding, code base, etc...)
GUI없이 코드로 UI의 위치, 애니매이션 등등을 다루는 방법이다.
장점
- 그냥 코드이기 때문에 협업 시 충돌 등의 문제가 일반적인 코드 수준이다.
- 그냥 코드이기 때문에 스토리보드나 NIB처럼 로딩하고 파싱하는 과정이 없이 실행되므로 시간을 아껴준다.
- 스토리보드와 NIB로 할 수 없는 것들을 가능하게 해준다.
- 작업 전체에 통제감을 준다.
단점
- 시각화 되는 부분이 없기 때문에 빌드해서 직접 보기 전까지 화면이 어떻게 생겼는지 알 수 없다.
- 쉽지 않다.
SwiftUI
제일 최근에 나온 방법이다. 코드로 UI를 개발하는 것의 장점과 스토리보드의 시각화 장점을 모두 갖춘 진정한 차세대 IOS UI개발 방법이라고 볼 수 있다(편애).
장점
- Programmatic Type의 차세대 버전이라 할 수 있다. 스토리보드니 뭐니 다 신경 안써도 된다.
- 프리뷰 기능으로 바로바로 화면 구성을 스토리보드처럼 확인할 수 있다.
- 코드로 화면을 개발하면서, 훨씬 읽기 좋은 방식의 코드를 사용할 수 있다.
단점
- IOS13 이상의 운영체제만 지원한다.
- 아직 발전 중이다.
- 기존 IOS개발자들이 못미덥다고 생각한다.
개인적인 생각
일단 네 방법 중 무엇을 사용해야 하는가에 대한 내 생각은... 만약 IOS개발자라면 전부 다 알아야할 것 같다. 언제 어디서 어떤 방식을 만나게될지 모르니 전문가라면 다 알고 있는게 맞겠다.
하지만 취미로 한다? 그냥 하고 싶은 대로 하면 될 것 같다. 그래서 나도 일단 하고 싶은 대로 해야지.
나는 SwiftUI처럼 코드로 UI를 짜는게 편한 것 같다. Flutter나 웹 UI도 코드로 짜왔으니까 이게 훨씬 편하다.
'프로그래밍 > Swift + SwiftUI' 카테고리의 다른 글
IOS App의 Life-Cycle들(scene-based와 app-based) (0) | 2022.01.20 |
---|---|
UIKit (0) | 2022.01.19 |
댓글