본문 바로가기
IOS/IOS 스터디(Swift)

[iOS / Swift] issue - safeArea가 0.0이 잡히는 문제

by 김마리님 2023. 10. 13.

초기 뷰 로드 시에 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()

    }
반응형