초기 뷰 로드 시에 Screen Width를 잡아서 특정 뷰의 Height를 변경해야하는 과제가 있었다.
그런데 변경 후 self.view.layoutIfNeeded()를 실행하자, Height가 변경된 뷰와 AutoLayout으로 의존관계에 있던 뷰들이 죄다 safeArea를 인식하지 못하고 safeArea를 덮는 사태가 발생했다.
이것이 당시 코드이다
override func viewDidLoad() {
super.viewDidLoad()
checkPermission()
loadBJInfo()
initGesture()
setView()
//setPlayer()
setListener()
}
이 코드에서 setView가 초기에 뷰를 업데이트 하는 코드이다.
근데 이게 알고보니, 뷰가 출력되지 않은 상태에서 로드만 되었다면 safeArea가 0.0이 되면서 safeArea와 앵커된 모든 값들이 안전영역을 덮어버리는 사태가 발생했던 것이다.
그럼 이 때는 어떻게 하느냐, 뷰가 나타나는 오버라이딩을 잡아 뷰를 업데이트 한다.
override func viewDidLoad() {
super.viewDidLoad()
checkPermission()
loadBJInfo()
initGesture()
//setPlayer()
setListener()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
setView()
setChatting()
}
반응형
'IOS > IOS 스터디(Swift)' 카테고리의 다른 글
Swift, iOS] 현재 존재하는 뷰 컨트롤러 확인하기. (0) | 2023.10.18 |
---|---|
iOS] UITextView의 줄 수 제한, Padding 삭제 (0) | 2023.06.26 |
[Xcodeproj] cocoapods : Unknown object version (56). (RuntimeError) 해결법 (0) | 2023.05.31 |
Swift] TabbarController 사용 시 스토리보드 분리 (0) | 2023.05.31 |
[iOS] FSCalendar, 캘린더 라이브러리(StoryBoard). (0) | 2022.11.24 |