새소식

인기 검색어

iOS/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으로 나누어주거나 고정값을 주는 방법으로 해결.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.