iOS 개발 공부
[iOS] 하위 뷰의 frame이 잡히지 않을 때 본문
앱을 만들다가 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 |

