오늘은 Storyboard
에 대해서 얘기해보려 한다.
iOS 개발을 시작했을때 Storyboard
가 굉장히 신기했고, 재밌었다.
Drag & Drop과 오토레이아웃을 지정해주면 화면이 뚝딱이니까!
오늘은 왜 Storyboard
를 선호하지 않게 되었는지와 어떤 기준을 가지고 있는지에 대해 프로젝트를 진행하면서 느낀점과 함께 얘기해보려 한다.
물론 내 개인적인 생각이니 다른 의견이 있다면 말해주면 좋겠다.🙇♂️
iOS 프로젝트에서 첫 협업은 이미 80% 정도 화면이 나온 프로젝트였다.
처음 Storyboard
파일을 여는데 너무 느렸다....
진짜 너무 느렸다...ㅋㅋㅋㅋㅋㅋ
느리고... 화면이 로딩되는 시간도 오래걸렸다.
이전에 공부하며 실습했던 프로젝트에서는 볼 수 없던 속도였다.
본격적으로 개발을 하기 전에 화면 흐름을 파악해야하는데 이미 Storyboard
에서 화면 흐름 파악하는게 너무 어려웠다.
지금 생각해보면 Storyboard
를 기능에 따라 좀 더 분리했으면 흐름 파악이 빠르지 않았을까라는 생각이 든다.
그 당시에는 하나의 Storyboard
에 화면들이 뭉쳐져 있었다.
당시에는 화면 이동시 Segue
를 사용하지 않았다.
즉, Storyboard
에는 그냥 여러 화면들이 놓여져 있었다.
화면 흐름을 파악하기 위해서는 ViewController
에서 화면 이동하는 코드를 확인하면서 어떤 Storyboard
인지, 그리고 그 중에서 어떤 identifier
를 가졌는지 확인해야 했다.
그리고 해당 Storyboard
를 열어 화면들을 하나씩 클릭하며 identifier
를 확인했다.
사실 이 과정 자체가 엄청난 overhead라고 생각한다.
Segue
를 사용했다면 어땠을까?Segue
를 사용했다면 Storyboard
상에서 화면의 흐름을 파악하는게 쉬워지긴할거 같다.
(화살표를 쭉 따라가면서 볼 수 있으니까)
하지만 하나의 Storyboard
에 화면이 많아진다면?
과연 엄청난 화살표 속에서 내가 원하는 화면들을 쭉쭉 따라갈 수 있을까?
나는 아니라고 생각한다.
새로운 화면 B를 추가하면서 이전에 있던 화면 A에 이동하는 버튼을 추가했다.
A 화면은 다른 팀원이 수정하고 있던 화면였는데 merge하려니 Conflict가 났다...
Conflict를 해결하기 위해 Storyboard 코드를 열었는데...ㅎㅎ
해결하느라 엄청 고생했던 기억이 있다.
지금이라면 팀원과 역할 분담을 확실히해서 Conflict나지 않도록 할거 같지만 그 당시에는 잘 몰랐다...
위에서 내가 프로젝트를 진행하면서 느꼈던 부분들을 정리했다.
물론 내가 느낀거이므로 다른 의견이 있을 수 있다.
내가 생각해도 "Storyboard
를 좀 더 잘게 쪼갰으면 어떘을까?"라는 생각이 드는 부분들도 있어서...
이제 UI를 작성하는 방법인 Storyboard
, XIB
, Code
의 장단점을 알아보자.
ViewController
하나만 초기화된 후 Segue
에 따라서 동적으로 메모리에 올라간다.Storyboard
는 의존하는 모든 ViewController를 함께 복사/이동해야하므로 재사용하기 까다롭다.Storyboard
로 만든 View를 사용하기 위해서는 Identifier
를 부여하고, 연결해줘야 한다.Storyboard
는 data의 흐름에는 관여하지 않는다.Segue
의 이름이 잘못 되거나, 잘못된 Identifier
사용시 runtime error가 발생한다.화면이 눈에 보이고 재사용하기 편해 XIB도 즐겨 사용한다.
또한, Conflict가 나도 Storyboard
보다 규모가 작기 때문에 부담이 덜하기도 하다.
Storyboard
에 비해 부담이 적다.화면을 그리다 보면 그림자가 있는 view나 모서리가 둥근 view가 필요할 때가 있다.
이럴때는 Code를 사용한다.
Storyboard
, XIB
로 구현한 모든 화면을 Code
로 구현할 수 있다.Storyboard
, XIB
로 구현할 수 없는 모든 화면을 Code
로 구현할 수 있다.Code
로만 구현할 수 있는 경우가 있다.Storyboard
, XIB
는 여러 과정을 거쳐 최종적으로 Code
로 변환되지만 Code
는 그런 과정을 거치지 않는다.Code
로 구현된 화면은 재사용하기 쉽다.Storyboard
, XIB
에 비해 쉽다.Storyboard
나 XIB
와 달리 view가 보이지 않으므로 동적으로 화면을 파악하기 어렵다.오늘은 UI를 작성하는 여러 방법들을 알아봤다.
각자의 장단점을 정리하고 나니 앞으로 유의할 점에 대해서 생각해보게 됐다.
그럼 이만👋