[iOS] UI 개발에 대한 잡담

이 글에서는 주니어로서 2년 정도의 시간동안 회사에서 개발을 하며 UI작업에서 느낀 점을 공유하려고 합니다.

UI 개발에 대해서 다른 직군의 사람들은 종종 오해를 하곤합니다.

이를 테면

  • 그냥 여기만 조금 바꾸면돼

라던가, 아니면

  • 여기 셀 안에 간격이 여긴 10이고 여기 간격은 20인데 여기는 30으로 해주세요.

등 같은 클라이언트 개발자가 듣기에도 쉬워보이는 작업일 수도 있죠.

물론 딱 마주 쳤을 때, 저 역시 항상 그런 마음입니다.

뭐 그냥 좀 하면 되겠지!

그러나 막상 하다보면 스토리보드와 코드로 작성하는 부분에서 라이프 사이클에 차이가 발생하는 경우도 있고,

때로는 오토레이아웃이 잘 안먹을 때도 있고,

또 어떤 때는 xib 때문에 말성을 일으키기도 합니다.

가끔은 UI 개발이 이렇게까지 약간의 하급 작업(?) 대우를 받아야 하는 건가 싶기도 합니다. 누가 특별히 그랬다 라기보단 아무래도 아키텍처부분이나 다른 더 핵심 로직보다는 당연히 힘이 덜 들어가는 것은 사실인것 같긴해요.

하지만 UI는 생각보다 많은 지식과 고찰을 필요로 하고, 많은 공부를 필요로하는 모바일 개발의 꽃이라고 생각합니다.

UI는 간단한 작업이다? — 가 아니었구나..

iOS를 처음 시작했을때는 UI를 개발하는 것은 그냥 1차원적인 부분으로 생각했었어요.

그냥 스토리 보드에 뷰 몇개 올리고 IBOutlet과 IBAction 몇개 찍찍 넣어주고 나면

와… 된다!!!

된다! 이러고 끝이었죠 ㅠㅠ..

그리고 오토레이아웃은 공부한대로 좀 넣어보고 안되면 XCode가 에러띄우고 “이렇게 fix해봐” 하는대로 대충 update버튼 눌러서 해결하면 되는 건줄 알았죠.

(망할 XCode가 이렇게 불안정한 툴인줄 알기 전까지는요)

그런데 막상 디자이너가 준 시안을 토대로 개발을 시작하자, 생각처럼 되지 않는 경우가 굉장히 많았어요.

혼자 개발할땐 대충 “아 여긴 오토레이아웃 안먹으니까 이렇게 하고 이게 내 의도인척하자” 정도에서 끝났지만, 진짜 협업을 하게 되니 구현을 해야됐고, 그에 필요한 지식도 습득을 해야 했습니다.

디테일은 개발자의 몫

글구, 종종 개발자가 UI에 있어서 디테일한 부분을 잡아줘야하는 경우가 많은 것 같아요.

예를 들어 UIImageView와 UILabel사이의 오토레이아웃을 설정하는데, 레이블에 들어가는 글자가 매우 길어지면 어떻게 뷰를 잡아줘야할지? 이런 예외 상황들의 경우는 개발자가 UI를 잡을 때 굉장히 필수적인 요소가 됩니다.

이런걸 모르고 개발하면 오토레이아웃은 에러를 뿜뿜어대고

만약 일단 막 해놓고 나중에 수정하자! 하다간 뒤늦게 QA에서 발견하지 못한 이슈가 출시를 하고 난뒤 발견되면 또 다시 핫픽스를 해야되는 상황까지 이르게 되는거죠.

디테일한 부분에서 일어날 수 있는 UI 이슈들은 디자이너가 모든걸 잡아줬음 좋겠지만, 그게 늘 그렇게 되진 않으니 항상 신경을 써줘야하는 것 같습니다ㅠㅠ

UI 라이프 사이클은 단순히 view controller만 알아야하는게 아니구나.

iOS을 처음 공부할 땐, view controller에 대한 라이프 사이클은 기본적으로 알기싫어도 공부하게 되는데요.

그 외에도.. 개발하다보면 다들 말은 안해도

여러 view들 간에 알아야하는 (알아도 알아도 매번 까먹는) 순서들이 생기게 됩니다.

UIView만 해도 당연히 호출 순서가 있고, UITableViewCell 안에서의 라이프 사이클도 있고, 조금 복잡하게는 UINavigationController를 통해 뷰컨트롤러를 push하는 경우 UITableViewCell의 변화에 대한 라이프 사이클에 따라 UI를 적용해야 하는 경우까지 생깁니다.

개발을 하다보니 이렇게 다양한 라이프 사이클이 섞여서 매번 일일이 테스트 해보는 경우도 허다했습니다ㅠㅠ

아직 이런 경우들을 해결하는 방법은 저도 딱히 해결책을 가지고 있진 않은터라 그때그때 구글링과 미디움에서 훌륭한 개발자 분들의 글을 통해 많은 해결책을 얻어내곤 합니다.

그리고 여러 메소드를 일일이 디버깅하는 방법에 결국 손을 대고야 말게 되더라구요..

이런 다양한 상황에서의 라이프 사이클도 될때마다 나름의 정리를 해두면 좋을 것 같은 생각을 하게 되네요(라고 하면서도 맨날 안함 ..)

결국 UI는 경험

개발하는데 대부분이 그렇겠지만 iOS에서 오토레이아웃이나, UI를 잘 잡으려면 많이 만들어보는 수 밖에 없는 것 같습니다.

많은 시행착오를 겪을 수록, 더 많이 특수한 상황을 대비할 수 있게 되는 것 같습니다.

특히 오토레이아웃은 처음에는 요소 하나하나 따져가며 잡아가지만, 하면 할 수록 특정 영역의 View를 좀 더 큰 단위로 생각하며, 중간에 XCode가 뿜어내는 빨간 에러따위는 무시하고, 나의 생각대로 잡아가는 능력이 생기는 것 같습니다.

비록 아직은 저도 많이 부족하지만 많은 연습을 통해 숙련된 개발자가 되어야 겠습니다.

--

--

https://www.notion.so/iOS-7a979d77a48247c890285a9a085cda9f

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store