2016-10-19 57 views
0

enter image description here如何在iOS中設置狀態欄以顯示消息?

我期待以設置一個消息就在狀態欄的下方,這可能會更改消息的顏色(見照片 - 我期待以設置一個消息,其中「睡眠週期」是)。但是,我已經看過iOS的人體設計指南,但無法確定這個控件的調用方式。

https://developer.apple.com/ios/human-interface-guidelines/ui-bars/navigation-bars/

只是在正確的方向點會有很大的幫助。

+0

是否與[this](https://github.com/bryx-inc/BRYXBanner)相似? –

+0

沒有:)這個「狀態欄消息」存在於應用程序之外。這似乎是在應用程序。 – kev

+0

除非您使用音頻錄製等後臺服務,否則您無法從應用以外進行此操作。而且太系統顯示它,你無法控制它 – Sandeep

回答

3

試試這個代碼:代碼在Xcode測試8.

/更新您的plist與下面碼

View controller-based status bar appearance = NO 

//在您的VC:從上面的代碼

 override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    title = "Some Title" 

    navigationController?.navigationBar.tintColor = UIColor.white 
    navigationController?.navigationBar.barTintColor = UIColor.red 
    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white] 
    UIApplication.shared.statusBarStyle = .lightContent // To change your status bar to display light content (In white colour) 
    } 

    func sleepCycleNotify() { 

    // To set BannerView 
    let barView = UIView(frame: CGRect(x:0, y:0, width:view.frame.width, height:(UINavigationController().navigationBar.frame.height))) 
    barView.backgroundColor=UIColor.red // set to any colour you want.. 
    navigationController?.navigationBar.addSubview(barView) 

    let notifyLabel = UILabel() 
    notifyLabel.frame = CGRect(x:0, y:0, width:view.frame.width, height:(UINavigationController().navigationBar.frame.height)) 
    notifyLabel.backgroundColor=UIColor.clear 
    notifyLabel.text = "Sleep Cycle" 
    notifyLabel.textAlignment = .center 
    notifyLabel.textColor = UIColor.white 
    notifyLabel.alpha = 0.8 
    barView.addSubview(notifyLabel) 


    // Animation 1: 
    // To achive animation 
    barView.center.y -= (navigationController?.navigationBar.bounds.height)! 


    UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.6, options: UIViewAnimationOptions.curveEaseIn, animations:{ 
     barView.center.y += (self.navigationController?.navigationBar.frame.height)! 


     }, completion:{ finished in 



      UIView.animate(withDuration: 1, delay: 1.5, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.9, options: UIViewAnimationOptions.curveEaseOut, animations:{ 

       barView.center.y -= ((self.navigationController?.navigationBar.frame.height)! + UIApplication.shared.statusBarFrame.height) 

       }, completion: nil) 

    }) 


} 

輸出:

enter image description here

//動畫2:

func sleepCycleNotify() { 

    // 
    let barView = UIView(frame: CGRect(x:0, y:0, width:view.frame.width, height:(UINavigationController().navigationBar.frame.height))) 
    barView.backgroundColor=UIColor.red // set any colour you want.. 
    navigationController?.navigationBar.addSubview(barView) 

    let notifyLabel = UILabel() 
    notifyLabel.frame = CGRect(x:0, y:0, width:view.frame.width, height:(UINavigationController().navigationBar.frame.height)) 
    notifyLabel.backgroundColor=UIColor.clear 
    notifyLabel.text = "Sleep Cycle" 
    notifyLabel.textAlignment = .center 
    notifyLabel.textColor = UIColor.white 
    notifyLabel.alpha = 0.8 
    barView.addSubview(notifyLabel) 



    // To achive animation 
    barView.center.y -= (navigationController?.navigationBar.bounds.height)! 


    UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.6, options: UIViewAnimationOptions.curveEaseIn, animations:{ 

     UIApplication.shared.isStatusBarHidden = true 
     UINavigationController().navigationBar.isHidden = true 
     barView.center.y += (self.navigationController?.navigationBar.frame.height)! 




     }, completion:{ finished in 



      UIView.animate(withDuration: 1.5, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.9, options: UIViewAnimationOptions.curveEaseOut, animations:{ 
       // notifyLabel.alpha = 0...1 
       UIApplication.shared.isStatusBarHidden = false 
       UINavigationController().navigationBar.isHidden = false 
       barView.center.y -= ((self.navigationController?.navigationBar.frame.height)! + UIApplication.shared.statusBarFrame.height) 


       }, completion: nil) 

    }) 


} 

從動畫2輸出:

enter image description here

改進答案:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    title = "Some Title" 

    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white] 
    navigationController?.navigationBar.barTintColor = UIColor.purple 
    UIApplication.shared.statusBarStyle = .lightContent 

    } 

    func sleepCycleNotify() { 

    // To set BannerView 
    let barView = UIView(frame: CGRect(x:0, y:-UIApplication.shared.statusBarFrame.height, width:view.frame.width, height:(UINavigationController().navigationBar.frame.height) + UIApplication.shared.statusBarFrame.height)) 
    barView.backgroundColor=UIColor.red // set to any colour you want.. 
    navigationController?.navigationBar.addSubview(barView) 


    let notifyLabel = UILabel() 
    notifyLabel.frame = CGRect(x:0, y:UIApplication.shared.statusBarFrame.height, width:view.frame.width, height:(UINavigationController().navigationBar.frame.height)) 
    notifyLabel.backgroundColor=UIColor.clear 
    notifyLabel.numberOfLines = 0 
    notifyLabel.text = "Sleep Cycle" 
    notifyLabel.textAlignment = .center 
    notifyLabel.textColor = UIColor.white 
    notifyLabel.alpha = 0.8 
    barView.addSubview(notifyLabel) 


    // Animation 1: 
    // To achive animation 
    barView.center.y -= (navigationController?.navigationBar.bounds.height)! 


    UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.6, options: UIViewAnimationOptions.curveEaseIn, animations:{ 
     barView.center.y += (self.navigationController?.navigationBar.frame.height)! 



     }, completion:{ finished in 



      UIView.animate(withDuration: 1, delay: 1.5, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.9, options: UIViewAnimationOptions.curveEaseOut, animations:{ 

       barView.center.y -= ((self.navigationController?.navigationBar.frame.height)! + UIApplication.shared.statusBarFrame.height) 

       }, completion: nil) 

    }) 
} 

輸出從動畫3:

enter image description here