Project/WhereToGo

네비게이션 바 가시성 수정 및 상태 표시줄 배경색 추가

밤새는 탐험가89 2024. 8. 5. 00:29

 

수정 전(좌측), 후 (우측)

 

 

문제점

  • 화면을 스크롤해서 내리는 과정에서 상단 상태 바과 네비게이션 바가 겹치는 문제 발생 

 

해결 방법

  • 직관적으로 상단 상태 바에 배경색을 지정
class HomeViewController: UIViewController {
    
	...
    
    // 상태 표시줄 배경색 뷰
    private let statusBarBackgroundView: UIView = {
        let view = UIView()
        view.backgroundColor = .systemBackground// 원하는 색상으로 설정
        return view
    }()
    
    
    // MARK: - Life Cycle
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemBackground
        view.addSubview(homeFeedTable)
        
        let headerView = HeroHeaderUIView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: 440))
        homeFeedTable.tableHeaderView = headerView
        
        // 상태 표시줄 배경색 뷰 추가
        if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
           let window = windowScene.windows.first(where: { $0.isKeyWindow }) {
            window.addSubview(statusBarBackgroundView)
            window.bringSubviewToFront(statusBarBackgroundView)
        }
        
        homeFeedTableDelegate()
        configureNaviBar()
    }
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        
        let padding: CGFloat = 5
        homeFeedTable.frame = view.bounds.inset(by: UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding))
        
        // 상태 표시줄 배경색 뷰의 프레임 설정
        let statusBarHeight = view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
        statusBarBackgroundView.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: statusBarHeight)
    }
    ...

'Project > WhereToGo' 카테고리의 다른 글

ScrollView 안에 PageControl 기능 넣기  (1) 2024.08.04