관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] status bar, status bar view 속성 (배경, 글씨 색깔) 동적으로 변경하는 방법 본문

iOS 실전 (swift)

[iOS - swift] status bar, status bar view 속성 (배경, 글씨 색깔) 동적으로 변경하는 방법

jake-kim 2021. 1. 21. 23:40

status bar 객체 접근 방법

  • statusBarStyle을 전역변수로 선언
    변수로 선언한 후, 이 변수의 값을 수정하면 preferredStatusBarStyle 변수가 불리면서 바뀐 statusBar 속성이 적용
import UIKit

class MyVC: UIViewController {
    var statusBarStyle: UIStatusBarStyle = .default
    
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return statusBarStyle
    }
    
    func didTapBtnStatusBarChange() {
        statusBarStyle = .lightContent
        setNeedsStatusBarAppearanceUpdate()
    }
}

status bar view 객체 접근 방법

  • CommonExtension과 같은 곳에 UIViewController extension으로 statusBarView라는 computed property로 지정하면 편리
extension UIViewController {
    var statusBarView: UIView? {
        if #available(iOS 13.0, *) {
            let statusBarFrame = UIApplication.shared.keyWindow?.windowScene?.statusBarManager?.statusBarFrame
            if let statusBarFrame = statusBarFrame {
                let statusBar = UIView(frame: statusBarFrame)
                view.addSubview(statusBar)
                return statusBar
            } else {
                return nil
            }
        } else {
            return UIApplication.shared.value(forKey: "statusBar") as? UIView
        }
    }
}
  • statusBarView 객체 접근하여 배경 색깔 변경
statusBarView?.backgroundColor = UIColor.blue
Comments