https://github.com/SnapKit/SnapKit
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)
}
child.snp.makeConstraints { make in
make.lead.top.trailing.bottom.equalToSuperview()
}
//edge
child.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
view.safeAreaLayoutGuide.snp.top
override func viewDidLayoutSubviews() {
if !isShadow {
print("Set shadow in main")
setShadows(mainCanvasView)
isShadow = true
}
}
오토레이아웃이 적용된 뷰의 프레임을 사용하고자 할 때, 뷰디드로드나, 뷰윌어피어에서 view 프레임이 (0,0,0,0)으로 나온다.
View의 frame이 적용되는 순간은 viewDidLayoutSubviews() 이순간에 정의된다.
⚠️ 주의할 점은 메인 뷰에서 해당 뷰사이클에 서브뷰를 추가하게 되면 다른 뷰로 넘어갈 때마다 호출되기 때문에 해제되지않은 서브뷰들이 계속 쌓이게 된다. 조심 ⚠️
Tutorial | https://terry-some.tistory.com/122