본문 바로가기
프로그래밍/Swift + SwiftUI

IOS UI개발 방법 네 가지에 대한 글

by yonmoyonmo 2022. 1. 18.

By Lusine Gasparyan

이미지 출처 : https://medium.com/picsart-engineering/4-ways-of-ui-development-in-ios-c7841ee22dbd

 

4 Ways of UI Development in iOS

If you are already a mobile developer or going to become, you will surely know that one of the key points in mobile development is the…

medium.com


어쩌다 보니 SwiftUI IOS앱을 만들기 시작했다. 만들던 앱을 얼추 마무리 하고 ARKit 이용해 뭔가 재밌는 것을 만들어 봐야지 싶어서 IOS 개발을 알아봤다. 그런데 맙소사! UI 만드는 방법이 무려 가지 있는 것이었다!

그래서 일단 해보자 싶어서 SwiftUI 아닌 Storyboard 프로잭트를 시작했다.

인터페이스 부분을 Storyboard로
너무나 속이 답답해지는 GUI

스토리보드를 보자마자 막막해졌다. 이걸로 어쩌라는 건지 답답한 마음에 이것저것 찾아보니, 나만 이런 답답함을 느끼는게 아니었던 것이었다! 스토리보드를 안쓰고도 충분히 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

 


'프로그래밍 > Swift + SwiftUI' 카테고리의 다른 글

IOS App의 Life-Cycle들(scene-based와 app-based)  (0) 2022.01.20
UIKit  (0) 2022.01.19

댓글