0
我期待以設置一個消息就在狀態欄的下方,這可能會更改消息的顏色(見照片 - 我期待以設置一個消息,其中「睡眠週期」是)。但是,我已經看過iOS的人體設計指南,但無法確定這個控件的調用方式。
https://developer.apple.com/ios/human-interface-guidelines/ui-bars/navigation-bars/
只是在正確的方向點會有很大的幫助。
我期待以設置一個消息就在狀態欄的下方,這可能會更改消息的顏色(見照片 - 我期待以設置一個消息,其中「睡眠週期」是)。但是,我已經看過iOS的人體設計指南,但無法確定這個控件的調用方式。
https://developer.apple.com/ios/human-interface-guidelines/ui-bars/navigation-bars/
只是在正確的方向點會有很大的幫助。
試試這個代碼:代碼在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)
})
}
輸出:
//動畫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輸出:
改進答案:
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:
是否與[this](https://github.com/bryx-inc/BRYXBanner)相似? –
沒有:)這個「狀態欄消息」存在於應用程序之外。這似乎是在應用程序。 – kev
除非您使用音頻錄製等後臺服務,否則您無法從應用以外進行此操作。而且太系統顯示它,你無法控制它 – Sandeep