https://github.com/SnapKit/SnapKit

Hello world

titleView.snp.makeConstraints { make in
    make.top.equalTo(view.safeAreaLayoutGuide.snp.top).offset(16)
    make.centerX.equalToSuperview()
    make.leading.equalToSuperview().offset(16)
    make.trailing.equalToSuperview().offset(-16)
    make.height.equalTo(44)
}

Anchor

child.snp.makeConstraints { make in
  make.lead.top.trailing.bottom.equalToSuperview()
}

//edge
child.snp.makeConstraints { make in
  make.edges.equalToSuperview()
}

Safearea

view.safeAreaLayoutGuide.snp.top

etc

Auto-layout get frame

override func viewDidLayoutSubviews() {
        if !isShadow {
            print("Set shadow in main")
            setShadows(mainCanvasView)
            isShadow = true
        }
    }

오토레이아웃이 적용된 뷰의 프레임을 사용하고자 할 때, 뷰디드로드나, 뷰윌어피어에서 view 프레임이 (0,0,0,0)으로 나온다.

View의 frame이 적용되는 순간은 viewDidLayoutSubviews() 이순간에 정의된다.

⚠️ 주의할 점은 메인 뷰에서 해당 뷰사이클에 서브뷰를 추가하게 되면 다른 뷰로 넘어갈 때마다 호출되기 때문에 해제되지않은 서브뷰들이 계속 쌓이게 된다. 조심 ⚠️

&ref

Tutorial | https://terry-some.tistory.com/122