[iOS] AutoLayout, UI 제작의 차이

2020. 5. 23. 13:16iOS

1. AutoLayout

1) 마우스 우 클릭 및 하단의 아이콘으로 설정 가능

AutoLayout을 하기 전에 Object의 조사를 하고 진행하는게 숙련도에 좋다. 각 기종 화면의 크기에 맞게 자동으로 Layout을 구성이 가능하다.

AutoLayout 설정 방법

2) Error 처리

Error 처리

 

 

 

2. UI 제작의 차이

1) Storyboard

Storyboard 사용 유무 설명
사용할 때 - 뷰 컨트롤러 사이에서의 이동을 주된 목적을 하는 다수의 서로 연결된 뷰 컨트롤러의 경우, 네비게이션의 흐름(pop, push, present, dismiss )을 쉽게 해줌
- 뷰 컨트롤러가 자동으로 생성되므로 alloc이나 init을 해줄 필요 없음
- 테이블 뷰 컨트롤러의 이점으로는, 셀을 함께 디자인해서 테이블뷰와 함께 둘 수 있으며 여러 형태의 셀 템플릿을 디자인할 수 있음 (Static cell 사용 가능)
사용하지 않을 때 - 복잡한 다이나믹 레이아웃을 가진 뷰일 경우 (코드 추천)
- 뷰가 이미 XIB이나 코드로 개발 되어 있을 때
장점 / 단점 설명
장점 - 기능/주제/메뉴 등등의 분류대로 분리된 여러 개의 스토리보드로 구현
- 퍼포먼스로는, 최초 뷰컨트롤러 하나만 초기화된 후 나머지는 세그가 동작할 때 동적으로 객체화
- 프로토타입으로는, 스토리보드와 코드 몇 줄로 빠른 목업 프로토타입이 가능
단점 - 여러 사람이 작업할 경우 충돌 발생 소지가 아주 높고 머지가 쉽지 않음
- 재사용성의 관점에서, 스토리보드는 의존하는 모든 뷰 컨트롤러들과 함께 복사 혹은 이동해야 함 (스토리보드의 나머지 기능에 의존적이기 때문에 뷰 컨트롤러 하나만 뽑아내 재사용하기 성가심)
- 데이터 흐름의 관점에서, 스토리보드는 뷰 컨트롤러들 사이의 흐름을 다루지만 데이터의 흐름은 관여하지 않음

2) NIB

NIB 사용 유무 설명
사용할 때 - 모달 뷰, 간단한 로그인/회원가입 뷰, 설정, 팝업 윈도우, 재사용 가능한 뷰, 재사용 가능한 테이블 셀
사용하지 않을 때 - 내용에 따라 변화무쌍한 레이아웃을 가진 뷰들
- 애초에 인터페이스 빌더에서 쉽게 디자인할 수 없는 뷰들
- 스토리보드에서는 단순하게 처리할 수 있는 복잡한 화면전환을 가진 뷰 컨트롤러들
장점 / 단점 설명
장점 - 스토리보드가 NIB의 대체품은 아님
- 더욱 구체적인 UI의 구현이 가능함
- 객체지향 관점에서 뷰를 여러 분리된 모듈로 쪼개서, 개발/테스트/디버그를 쉽게 해줌
- 머지 충돌문제를 갖고 있으나, 규모가 스토리보드에 비해 규모가 작음
- 여러 클래스에서 동일한 레이아웃을 공유할 경우 좋음 (로그인 뷰와 회원가입 뷰는 패스워드 필드 하나를 감추는 형태로 비슷한 기능과 레이아웃을 공유할 수 있음)
단점 - NIB는 필요할 때 로드가 됨
- 필요할 때 외에는 메모리를 사용하지 않으나, 로드 시 지연이 있을 수 있음

3) 코드

코드 사용 유무 설명
사용할 때 - 다이나믹(변화가 크거나 빈번한)
- 둥근 모서리나 그림자 등의 효과를 갖는 뷰
- NIB와 스토리보드를 사용하는 것이 복잡하거나 불가능한 경우
사용하지 않을 때 - 보통 코드로 만든 UI는 언제나 사용되며, 좋지 않은 경우는 드뭄
- NIB와 스토리보드가 테이블에 몇 가지 장점이 있지만, 코드 사용을 만류할 만한 목록에 넣을 만한 합당한 단점이 없는 것 같음
장점 / 단점 설명
장점 - 스토리보드와 NIB으로 할 수 있는 어떤 것도 코드로도 가능
- 스토리보드와 NIB으로 할 수 없는 것들은 언제나 코드로 구현할 수 있음
- 동작방식의 장점으로, UI를 코드로 작성하는 법을 알면 그 이면에 어떤 일이 일어나는지 알 수 있음
- 뷰가 이리 저리 움직이는 다이나믹 레이아웃이나 내용물에 기반을 두고 변화하는 레이아웃 등이 있을 때 코드만이 UI 디자인에 있어 유일한 방법인 경우가 있음
- NIB나 스토리보드가 머지 충돌로 고통스러울 수 있는 반면, 코드는 분명한 문법적 의미를 갖고 있기 때문에 충돌을 해결하는 것이 그리 어렵지 않음
- 성능 관점에서 스토리보드와 NIB는 로드와 파싱에 오버헤드를 거치고 최종에서야 간접적으로 코드로 변환됨
- 코드로 작성하는 뷰는 재사용 가능한 디자인으로 구현할 수 있음
단점 - 레이아웃이 화면에 어떻게 보여지고 작동하는지 보여주기 위해 작업해야 하는 시간이 NIB와 스토리보드에 비해 오래 걸림
- 누군가 오래 전에 작성한 코드를 리펙토링 하는 것이 훨씬 복잡해지며 구성요소들이 커스텀 메서드나 특정한 숫자들을 이용해 위치와 애니메이션을 결정하면 디버깅에 고통이 수반됨

[참고] https://www.toptal.com/ios/ios-user-interfaces-storyboards-vs-nibs-vs-custom-code

728x90

'iOS' 카테고리의 다른 글

[iOS] TableView  (0) 2020.05.23
[iOS] 데이터 전달  (0) 2020.05.23
[iOS] 생명주기  (0) 2020.05.23
[iOS] info.plist  (0) 2020.05.23