앱을 만들다가 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 > iOS' 카테고리의 다른 글
| [iOS] UIResponder, Responder Chain, First Responder (0) | 2024.06.09 |
|---|---|
| [iOS] 모듈화 Library, Framework, Package, (0) | 2024.05.09 |
| [iOS] UITableViewCell 또는 UICollectionViewCell 에서 Bind할 때 주의점 (0) | 2023.12.28 |
| [iOS] NaverMap SDK iOS SPM으로 추가하기 (0) | 2023.12.13 |
| [iOS] DI(Dependency Injection) 의존성 역전 (0) | 2023.05.27 |

