본문 바로가기

UIKIT

UINavigationBarAppearance() 에 대해서

let appearance = UINavigationBarAppearance()

// appearance는 메인 화면 위에 한겹을 쌓는다는 의미로 생각해야함

appearance.backgroundColor = .systemYellow // 배경을 노란색으로 설정

appearance.shadowColor = .clear      // 그림자 없애기

// 그림자를 제거하면 네비게이션 바 아래의 선을 제거할 수 있다.
// 네비게이션 바와 메인 화면 사이에 밑줄이 생김 (이걸 제거함)

// 메인 화면의 백그라운드 색상을 사용 
appearance.configureWithTransparentBackground()

// 반투명한 그림자를 백그라운드 앞에다 생성
appearance.configureWithDefaultBackground()
// 불투명한 색상의 백그라운드 생성 
appearance.configureWithOpaqueBackground()


// 네비게이션 바의 일반 상태(스크롤하지 않는 상태)에서의 모양을 설정
navigationController?.navigationBar.standardAppearance = appearance

// 작은 네비게이션 바(compact 상태)에서의 모양을 설정 => 예를 들어, 작은 타이틀을 사용할 때입니다.
navigationController?.navigationBar.compactAppearance = appearance

// 스크롤이 끝난 상태에서의 네비게이션 바의 모양을 설정
navigationController?.navigationBar.scrollEdgeAppearance = appearance

 

 

 

최종 적용한 코드

func setupNavigationBar() {
        let appearance = UINavigationBarAppearance()
        // appearance.backgroundColor = .systemYellow // 배경을 노란색으로 설정
        // appearance.shadowColor = .clear      // 그림자 없애기
        
        // 그림자 제거하고 기존의 백그라운드 색상을 사용 (그림자를 제거하고 기존 배경색을 사용)
        appearance.configureWithTransparentBackground()
        
        navigationController?.navigationBar.standardAppearance = appearance
        navigationController?.navigationBar.compactAppearance = appearance
        navigationController?.navigationBar.scrollEdgeAppearance = appearance
        
        //navigationController?.navigationBar.isTranslucent = true
        //navigationController?.navigationBar.shadowImage = UIImage() // 밑줄 없애기
    }