Skip to content

오토레이아웃을 코드로 작성하는 방법은 무엇인가? (3가지) #20

Open

Description

@Glsme

1. NSLayoutAnchor

제약을 주고 싶은 View의 Anchor Property에 접근하여 정의하는 방식이다.

  • 코드가 간결하여 가독성이 높다.
  • NSLayoutConstraint.Attribute 서브 클래스는 추가적으로 Type 검사를 제공하여 유효하지 않은 제약 조건을 생성하는 것을 방지한다.
let button = UIButton()

self.addSubView(button)
button.translatesAutoresizingMaskIntoConstraints = false
        
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true



2. NSLayoutConstraint

NSLayoutConstraint class의 convenience method를 통해 직접 생성하는 방식이다.

  • Layout에 관여하지 않는 parameter도 모두 값을 지정해주어야 한다.
  • 가독성이 떨어진다.
  • NSLayoutAnchor와 다르게 Type 유효 검사를 하지 않기 때문에 에러가 발생할 수 있다.
NSLayoutConstraint(item: myView, 
		   attribute: .leading, 
                   relatedBy: .equal, 
                   toItem: view, 
                   attribute: .leadingMargin, 
                   multiplier: 1.0, 
                   constant: 0.0).isActive = true



3. Visual Format Language

ASCII 같은 시각적 형식 문자열로 설명되는 제약 조건이다.

  • 시각적으로 정의하기 때문에 표현성이 좋다.
  • 간결한 표현방식이라 한 번에 여러 제약을 정의할 수 있다.
  • 모든 제약을 정의할 수 없다.
let format = "H:|[button(200)]|" 
let format2 = "V:|[button(100)]|"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions