clipsToBounds와 maskToBounds

라무·2023년 8월 9일

clipsToBounds

정의

🔥 subview들의 view의 bounds에 가둬질 수 있는 지를 판단하는 boolean 값
var clipsTobouds: Bool { get set }
  • true로 설정하면 subview가 view의 경계를 넘어갈 시 잘린다
  • false로 설정하면 경계를 넘어가도 잘리지 않게 된다

사용법

모서리를 둥글게 설정하려고 할 때, view의 cornerRadius를 설정해준 뒤 clipsToBounds를 true로 설정하면 subview에 무언가 채워질 때 view의 둥글게 된 틀에 따라서 정달아 잘리게 된다

→ 즉, 상단에 view에 CornerRadius를 주고 subview안에 넣으면 subview가 삐져나오는데 이걸 삐져나오지 않게 하려면 clipsToBounds를 true로 하면 된다

기본값은 false이다

  • clipsToBounds가 false라는 것은 SubView가 내 바깥 영역에서 그려져도 상관없다!

true로 변경하면

superView를 벗어나는 subView는 자리게 되는데 이때 실제로 subView가 잘린것일까?

  • Draw를 하지 않을뿐, SubView는 제 크기로 존재한다

frame기준이 아니고 bounds가 기준

iOS) Frame vs Bounds 제대로 이해하기 (1/3)

예시

  • 사진 stackview가 삐져나옴 -> clipsToBounds = false일때 clipsToBounds = true일때
  • 코드
    @IBOutlet weak var popUpView: UIView!
    @IBOutlet weak var stackView: UIStackView!
    
    let gray400 = UIColor(named: "gray400")
    
    override func viewDidLoad() {
    
      super.viewDidLoad()
      print("popUp viewDidLoad() called")
      
      popUpView.layer.cornerRadius = 10
      popUpView.layer.borderWidth = 1
    	popUpView.clipsToBounds = true
      popUpView.layer.borderColor = gray400?.cgColor
      detailBtn.layer.cornerRadius = 23
      neverSeeBtn.addRightBorder(borderColor: .lightGray, borderWidth: 1.0)
    }

maskToBounds

정의

🔥 sub layer가 내 Layer를 넘어선 경우, 내 layer 너머로 그릴 것인지 말 것인지 한계를 설정함
  • superView의 영역을 벗어나는 SubView의 영역은 그리지 않는다
  • 기본값은 False이다
  • layer의 property이다
UIView.layer.maskToBounds

open var maskToBounds: Bool { get set }

False일 경우

Sub layer가 내 바깥 영역에서 그려져도 상관없다는 것

True일 경우

superView 테두리가 기준이 된다

즉, subView의 내용이 잘려서 보인다 → superview의 layer를 벗어나는 것은 다 짤려진다

clipsToBounds와 maskToBounds의 차이

주의점!

기능은 동일하지만 불러오는 곳이 다를 뿐이다!

  • clipsToBounds → UIView의 포로퍼티이다
  • maskToBounds → CALayer의 프로퍼티이다
    • 즉, UIView의 layer를 통해서 제어를 해야 한다

참고한 블로그

clipsToBounds

[iOS] clipsToBounds 란 무엇인가? (feat. 모서리를 둥글게 둥글게)

clipsToBouns&maskToBounds

iOS) ClipsToBounds vs MasksToBounds

iOS ) masksToBounds/clipsToBounds의 차이점

profile
ios 개발을 하고있는 라무의 사적인 기술 블로그

0개의 댓글