EEYatHo 앱 깎는 이야기

Swift ) Layout, Constraint, AutoLayout 변천사 (2) - EEYatHo iOS 본문

iOS, Swift/Swift Theory

Swift ) Layout, Constraint, AutoLayout 변천사 (2) - EEYatHo iOS

EEYatHo 2021. 2. 25. 21:21
반응형

AutoLayout 방법의 발전


Layout 방법은 AutoLayout을 끝으로, 오랫동안 많은 사람이 썼다.

 

때문에 다양한 구현법과 유용한 서드파티들도 나와있다.

 

AutoLayout은 기본적으로 NSLayoutConstraint의 인스턴스를 생성하고,

이를 뷰에 붙힘으로써 제약사항을 걸어준다.

 

즉, 앞으로 나올 방식들은 NSLayoutConstraint 인스턴스를 생성하는 방법이며,

래핑 여부와 방법에 따라 나눠지는 것


1. NSLayout

 

- 가장 고전적인 방법.

- 소스가 길다 -> 필요없는 소스가 많음 (.isActive = true 라던지, 쓸대 없이 긴 객체 이름이라던지.. )

- 그다지 직관적이지 않다. 


2. Visual Format

 

- 마치 문자열에 뷰를 그리듯이 생성.

- 한 축에 해당하는 제약사항을 한줄로 처리가 가능 ( 소스 짧음 )

- 시각화와 직관성에 치중하여, 지원하지 않는 기능이 존재 ( center없음, safeArea 접근 불가 )

Visual Format 의 제약사항 생성방법
한줄에 많은 요소를 눌러 담은 모습 ( 짧은 소스 )


3. Anchor

 

- 애플에서 NSLayoutConstraint를 래핑한 NSLayoutAnchor라는 새로운 클래스를 만듦

- 좀더 간결하고 명확하게 제약을 사용할 수 있게됨.

- 여전히 불필요한 소스가 존재 ( constraint, .isActive = true 등 )

 

Anchor 방식의 제약 사용 방법

 

NSLayout 방식과 Anchor 방식 소스 차이


4. SnapKit

 

- AutoLayout 간편화 라이브러리

- AutoResizingMask 자동으로 false처리

- 축약기능 ( edge, equalToSuperview() 등 )

AutoResizingMask 자동 off
축약기능 ( edge, equalToSuperview() )
Anchor와 SnapKit 소스 길이 비교

 

Comments