swift – 如何在点击设备时隐藏状态栏和导航栏
当我点击设备像iphone中的照片时,如何隐藏状态栏和导航栏?
我用过 UIApplication.sharedApplication().setStatusBarHidden(false,withAnimation: UIStatusBarAnimation.Slide) 但它不工作。 编辑:我想隐藏和显示状态栏和导航栏,而不是永久隐藏它。
根据您的需要,您可以选择以下代码之一。
使用 – setNavigationBarHidden:animated:和一个UIButton 以下代码显示如何使用故事板中的UIButton设置并链接到@IBAction来切换状态栏和导航栏: import UIKit class ViewController: UIViewController { // Link this @IBAction to a `UIButton` in your Storyboard @IBAction func toggle(sender: AnyObject) { navigationController?.setNavigationBarHidden(navigationController?.navigationBarHidden == false,animated: true) } override func prefersStatusBarHidden() -> Bool { return navigationController?.navigationBarHidden == true } override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation { return UIStatusBarAnimation. Slide } } 使用 – setNavigationBarHidden:animated:和一个UIGestureRecognizer 作为以前代码的替代方法,您可以使用UIGestureRecognizer而不是UIButton: import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let gesture = UITapGestureRecognizer(target: self,action: "toggle:") view.userInteractionEnabled = true view.addGestureRecognizer(gesture) } func toggle(sender: AnyObject) { navigationController?.setNavigationBarHidden(navigationController?.navigationBarHidden == false,animated: true) } override func prefersStatusBarHidden() -> Bool { return navigationController?.navigationBarHidden == true } override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation { return UIStatusBarAnimation.Slide } } 使用hidesBarsOnTap 自iOS 8以来,UINavigationController具有一个hidesBarsOnTap属性(declaration)。苹果公司说:
以下代码显示了如何实现hidesBarsOnTap: import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() navigationController?.hidesBarsOnTap = true } override func prefersStatusBarHidden() -> Bool { return navigationController?.navigationBarHidden == true } override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation { return UIStatusBarAnimation.Slide } } 请注意,如果您已经在UINavigationController中添加了一个,则以前的代码也将切换您的导航工具栏。 使用navigationBarHidden和animateWithDuration:动画: 如果要控制动画持续时间,可以使用以下代码: import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let button = UIButton(type: UIButtonType.System) button.setTitle("Button",forState: UIControlState.Normal) button.addTarget(self,action: "toggle:",forControlEvents: UIControlEvents.TouchUpInside) view.addSubview(button) // Auto layout code using anchors (requires iOS 9) button.translatesAutoresizingMaskIntoConstraints = false let horizontalConstraint = button.centerXAnchor.constraintEqualToAnchor(view.centerXAnchor) let verticalConstraint = button.centerYAnchor.constraintEqualToAnchor(view.centerYAnchor) NSLayoutConstraint.activateConstraints([horizontalConstraint,verticalConstraint]) } func toggle(sender: AnyObject) { UIView.animateWithDuration(2) { self.navigationController?.navigationBarHidden = self.navigationController?.navigationBarHidden == false //self.navigationController?.setNavigationBarHidden(self.navigationController?.navigationBarHidden == false,animated: false) // also works } } override func prefersStatusBarHidden() -> Bool { return navigationController?.navigationBarHidden == true } override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation { return UIStatusBarAnimation.Slide } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |