layoutMargins, UIEdgeInsets

layoutMargins

뷰의 경계선과 컨텐츠 사이의 공간. 웹에서의 padding과 같은 역할. UIEdgeInsets 타입.

스토리보드에서 Editor -> Canvas -> Layout Rectangle을 통해 확인 가능.

Constrain to margins

오토레이아웃을 margin에 맞출것인지, superView의 경계선에 맞출것인지를 체크하는 옵션

subView를 추가하고 constraints를 파란뷰의 constraints를 상하좌우 0,0,0,0으로 주면

superView인 붉은색 뷰의 margins를 기준으로 레이아웃이 잡힌것을 확인

constrain to margins를 끈채로 constraints를 상하좌우 0,0,0,0으로 주면 View의 경계선을 기준으로 레이아웃이 적용

UIEdgeInsets

뷰의 가장자리를 설정해 주는 struct. 양수를 주면 그만큼 프레임이 감소, 음수를 주면 프레임이 증가. 

 

CGRect.inset(by: UIEdgeInsets)

기존 CGRect의 값을 UIEdgeInsets를 적용시킨값으로 리턴. center를 중심으로 변경

CGRect.insetBy(dx: CGFloat, dy: CGFloat),

기존 CGRect의 값을 top, bottom을 dx만큼, leading, trailing을 dy만큼 UIEdgeInsets를 적용시킨 값으로 리턴. center를 중심으로 변경

testView.bounds = testView.bounds.insetBy(dx: 40, dy: 40)
testView.bounds = testView.bounds.inset(by: UIEdgeInsets(top: 40, left: 40, bottom: 40, right: 40))