clipsToBounds vs masksToBounds
- 둘 다 뷰의 내부 컨텐츠를 잘라내는 역할을 한다. 그러나 사용되는 위치와 동작 방식에 약간의 차이가 있다..
🖇️ clipsToBounds
UIView
클래스에 속하는 속성
- 해당 뷰의 서브뷰가 뷰의 경계를 벗어나는 부분을 잘라낸다.
- 즉, 뷰의 경계 내부에서만 서브뷰가 보이게 된다. 그러므로, clipsToBounds가
true
로 설정되어 있으면 뷰의 경계를 벗어나는 컨텐츠는 보이지 않게 된다.
🖇️ masksToBounds
CALayer
클래스에 속하는 속성
- 해당 레이어와 그 이하의 모든 레이어의 컨텐츠를 잘라냄. 따라서 masksToBounds가
true
로 설정되어있으면 레이어의 경계를 벗어나 컨텐츠는 보이지 않게 된다. 이 속성은 UIView 클래스에서도 사용할 수 있으며, 해당 뷰의 레이어에 대해 설정하게 된다.
🗒️ 예시
button.clipsToBounds = true
button.layer.masksToBounds = false
button.clipsToBounds = true
로 설정되어있기 때문에 버튼의 경계를 벗어나는 컨텐츠는 잘리고 보이지 않게 됨
button.layer.masksToBounds = false
로 설정되어있기 때문에 버튼의 레이어가 경계를 벗어나는 그림자 효과를 표시할 수 있음
💫 정리
- clipsToBounds : 뷰의 경계 내에서만 서브뷰를 보여줌 (뷰의 서브뷰에 적용)
- masksToBounds : 뷰 또는 레이어의 경계 내에서만 콘텐츠를 보여줌 (뷰 또는 레이어 자체에 적용)