Swift/기술 면접
오토레이아웃을 코드로 작성하는 방법은 무엇인가? (3가지)
수줌이
2022. 6. 22. 01:17
오토레이아웃을 코드로 작성하는 방법에는 3가지가 존재한다.
1. NSLayoutConstraint
2. NSLayoutAnchor
3. VFL(Visual Format Language)
여기서 잠깐!!
스토리보드에서 오토레이아웃을 잡을 때에는 translatesAutoresizingMaskIntoConstraints 속성이 자동으로 false로 반영된다. 하지만 코드로만 개발을 할 때에는 그렇지 않기 때문에 translatesAutoresizingMaskIntoConstraints = false를 직접 써줘야 한다.(SnapKit 라이브러리 사용 시, 자동으로 반영된다.)
1. NSLayoutConstraint
- 속성값이 길고 직관적인편이나 코드가 길어지게 되면 가독성이 떨어진다는 단점이 있다.
NSLayoutConstraint(item: myView,
attribute: .leading,
relatedBy: .equal,
toItem: view,
attribute: .leadingMargin,
multiplier: 1.0,
constant: 0.0).isActive = true
2. NSLayoutAnchor
- 가장 많이 쓰이는 코드 방식이다. + 사용성을 위해 SnapKit 라이브러리와 함께 활용 가능하다.
- NSLayoutConstraint의 가독성 측면의 단점을 보완하기위해 Apple이 새롭게 내준 방식이다.
- 코드의 길이가 길어지긴 하지만 가독성이 좋아졌다.
NSLayoutConstraint.activate([
alertView.centerYAnchor.constraint(equalTo: window.centerYAnchor),
alertView.leadingAnchor.constraint(equalTo: window.leadingAnchor, constant: 20),
alertView.trailingAnchor.constraint(equalTo: window.trailingAnchor, constant: -20),
])
3. VFL(Visual Format Language)
- 기호 및 문자열로 레이아웃 관계를 시각적인 표현으로 제공하는 방식이다.
- 뷰는 대괄호로 표시되고 뷰간의 연결은 하이픈(또는 뷰들을 떨어뜨리는 숫자에 의해 두개의 분리된 하이픈)을 사용한다.
- NSLayoutConstraint를 이용해서 생성한다.
- 사용이 익숙해지면 편리하지만, 사용을 위해 VFL만의 문법을 익혀야한다는 단점이 존재한다.
let views = ["myView": myView]
let formatString = "|-[myView]-|"
let constraints = NSLayoutConstraint.constraintsWithVisualFormat(formatString,
options: .AlignAllTop,
metrics: nil,
views: views)
NSLayoutConstraint.activateConstraints(constraints)
3-1. Parameter Description
| Format | 제약 조건을 시각적 형식으로 나타낸 문자열 |
| options | 객체들의 속성, 레이아웃 방향 설명 |
| metrics | 상수 집합. 키는 문자열, 값은 NSNumber 객체 |
| views | 뷰 집합. 키는 문자열, 값은 뷰 객체 |
참고
[Swift] AutoLayout 코드작성방법 (Visual Format Language, NSLayoutAnchor, NSLayoutConstraint)
오토레이아웃을 코드로 작성하는 방법에는 3가지가 존재하는데요 사용법을 공부해보려고해요 같은 레이아웃을 다양한 방법으로 만들어볼건데요 aView(파랑) bView(빨강)이 있고 파란뷰가 좌우 간
nsios.tistory.com