투케이2K

174. (ios/swift) setStatusBarColor 상태 바 색상 (color) 동적 변경 실시 - UILabel , statusBarFrame 본문

IOS

174. (ios/swift) setStatusBarColor 상태 바 색상 (color) 동적 변경 실시 - UILabel , statusBarFrame

투케이2K 2022. 8. 22. 12:05
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

import UIKit


// MARK: [확장 기능 정의 색상 hex 값으로 지정]
extension UIColor {
   convenience init(red: Int, green: Int, blue: Int) {
       assert(red >= 0 && red <= 255, "Invalid red component")
       assert(green >= 0 && green <= 255, "Invalid green component")
       assert(blue >= 0 && blue <= 255, "Invalid blue component")

       self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
   }

   convenience init(rgb: Int) {
       self.init(
           red: (rgb >> 16) & 0xFF,
           green: (rgb >> 8) & 0xFF,
           blue: rgb & 0xFF
       )
   }
}


// MARK: [클래스 정의]
class ViewController: UIViewController {
    
    
    // MARK: [뷰 메모리 로드 수행 실시]
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        print("")
        print("===============================")
        print("[ViewController >> viewDidLoad() :: 뷰 메모리 로드 실시]")
        print("===============================")
        print("")
        
        
        // [상태 바 (status bar) 색상 변경 실시]
        self.setStatusBarColor(view: self.view, rgb: 0xff00ff)
        
    }
    
    
    
    
    
    // MARK: - [뷰 화면 표시]
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("")
        print("===============================")
        print("[ViewController >> viewDidAppear() :: 뷰 화면 표시]")
        print("===============================")
        print("")
    }
    
    
    
    
    
    // MARK: - [뷰 종료 상태]
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("")
        print("===============================")
        print("[ViewController >> viewDidDisappear() :: 뷰 종료 상태]")
        print("===============================")
        print("")
    }
    


    
    
    // MARK: [동적으로 상태 바 (status bar) 색상 변경 소스 코드]
    func setStatusBarColor(view: UIView, rgb: Int){
        
        /*
         // -------------------------------
         [setStatusBarColor 메소드 설명]
         // -------------------------------
         1. 디바이스 상태 바 색상 동적으로 변경 수행 메소드
         // -------------------------------
         2. 뷰 컨트롤러 viewDidLoad 메모리 로드 시작 부분에서 호출 실시
         // -------------------------------
         3. 호출 방법 :
         
         // [상태 바 (status bar) 색상 변경 실시]
         self.setStatusBarColor(view: self.view, rgb: 0xff00ff)
         // -------------------------------
         */
        
        // [1] : 디바이스 휴대폰 상태 바 높이 사이즈 확인 실시
        let statusBarHeight = UIApplication.shared.statusBarFrame.height
        
        // [2] : 현재 화면 가로 사이즈 확인 실시
        let statusBarWidth = view.frame.size.width
        
        if statusBarHeight != nil && statusBarHeight > 0 && statusBarWidth != nil && statusBarWidth > 0 {
            
            // [3] : 동적으로 UILabel 생성 실시
            var newBar : UILabel = UILabel.init(
                frame: CGRect.init(
                x: 0, // 가로 시작
                y: 0, // 세로 시작
                width: statusBarWidth, // 가로 사이즈
                height: statusBarHeight // 세로 사이즈
                )
            )
            newBar.text = "" // 초기 설정
            newBar.backgroundColor = UIColor.init(rgb: rgb).withAlphaComponent(1.0) // 배경 색상
            view.addSubview(newBar) // 뷰에 추가
            
            print("")
            print("===============================")
            print("[ViewController >> setStatusBarColor() :: 상태 바 색상 동적 변경 실시]")
            print("[statusBarHeight :: \(statusBarHeight)]")
            print("[statusBarWidth :: \(statusBarWidth)]")
            print("===============================")
            print("")
        }
    }


} // [클래스 종료]
 

[결과 출력]

 

 

반응형
Comments