iOS 개발 공부

[iOS] 하위 뷰의 frame이 잡히지 않을 때 본문

iOS

[iOS] 하위 뷰의 frame이 잡히지 않을 때

물복딱복준복 2023. 12. 28. 16:00

앱을 만들다가 view에 cornerRadius를 주었는데 적용이 되지 않다고 버튼을 클릭했을 때 적용되는 문제를 발견

 

// 하위뷰의 코드
override func layoutSubviews() {
        super.layoutSubviews()
        buttons.forEach { button in
            button.clipsToBounds = true
            button.layer.cornerRadius = button.bounds.height / 2
        }
    }
 

 

 

디버깅을 해보니 버튼의 frame이 잡히지 않은 시점 즉 frame이 0인 시점에서

button.layer.cornerRadius = button.bounds.height / 2 을 해주어  cornerRadius가 0이되어 발생하는 문제인것을 확인. 

 

왜 하위 뷰의 frame이 잡히지 않은것인가 디버깅을 해보니

  • 뷰의 렌더링 순서는 무조건 상위뷰 → 하위뷰순이 아님
  • updateContrains는 하위 → 상위, layoutSubViews는 상위 → 하위 순으로 호출

 

이란 것을 알게되었음.

 

상위 뷰의 frame으로 나누어주거나 고정값을 주는 방법으로 해결.

'iOS' 카테고리의 다른 글

[Swift] RxSwift, Combine 원리 이해하기  (0) 2024.01.20
[Swift] 정규표현식  (1) 2024.01.12
[Swift] Swift에서의 메모리 관리  (0) 2023.12.28
[Swift] Copy-on-Write  (1) 2023.12.28
[Swift] Swift에서의 Value Type, Reference Type  (0) 2023.12.28