콘텐츠로 건너뛰기

프로그래밍

[iOS Swift] status bar 색상(배경,글자색) 변경하기!!!

swift에서 status bar를 변경할려면 아래 코드를 viewDidLoad()에 넣으시면 됩니다

 statusbarView.backgroundColor = UIColor.red

위의 코드에 원하는 색상을 넣으면 됩니다

if #available(iOS 13.0, *) {
    let app = UIApplication.shared
    let statusBarHeight: CGFloat = app.statusBarFrame.size.height
    
    let statusbarView = UIView()
    statusbarView.backgroundColor = UIColor.red
    view.addSubview(statusbarView)
  
    statusbarView.translatesAutoresizingMaskIntoConstraints = false
    statusbarView.heightAnchor
        .constraint(equalToConstant: statusBarHeight).isActive = true
    statusbarView.widthAnchor
        .constraint(equalTo: view.widthAnchor, multiplier: 1.0).isActive = true
    statusbarView.topAnchor
        .constraint(equalTo: view.topAnchor).isActive = true
    statusbarView.centerXAnchor
        .constraint(equalTo: view.centerXAnchor).isActive = true
  
} else {
    let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
    statusBar?.backgroundColor = UIColor.red
}

근데 만약 검은색으로 사용시 status bar의 글자색 때문에 status bar에 아무것도 안보이게 됩니다

이럴때는 status bar 글자색을 바꿔줘야 되는데요

아래 함수를 추가 해주면 됩니다

override var preferredStatusBarStyle: UIStatusBarStyle {
		
	// 글자색을 흰색으로
	return .lightContent	
	
	// 글자색을 검은색으로
	//return .darkContent
}

그리고 info.plist에 View controller-based status bar appearance 항목을 추가 하고 value 값을 YES로 바꿔주시면 됩니다

[iOS Swift] 특정창의 네비게이션바 없애기!!

네비게이션 바를 없애면 모든 창의 네비게이션바가 없어집니다

특정 창의 네비게이션 바를 없앨려면 아래와 같이 사용하시면 됩니다

아래 소스는 특정 창의 네비게이션 창만 없애는 코드입니다

뷰가 화면에 보일때 네비게이션을 숨기고 다른창으로 넘어갈때 다시 보이게 하면 됩니다

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        navigationController?.setNavigationBarHidden(true, animated: animated)
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        navigationController?.setNavigationBarHidden(false, animated: animated)
    }