2017-05-07 63 views
1

点击我的imageView后,如何隐藏导航栏,一旦点击了我的imageView,导航栏就会弄乱全屏图像的视图,我希望隐藏图像被点击并在图像被解散后重新出现。这是我的代码为我的图像被挖掘。如何在点击图像时隐藏导航栏

//expandImage 




@IBAction func expand(_ sender: UITapGestureRecognizer) { 
    let imageView = sender.view as! UIImageView 
    let newImageView = UIImageView(image: imageView.image) 
    newImageView.frame = self.view.frame 
    newImageView.backgroundColor = .black 
    newImageView.contentMode = .scaleAspectFit 
    newImageView.isUserInteractionEnabled = true 
    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreen)) 
    newImageView.addGestureRecognizer(tap) 
    self.view.addSubview(newImageView) 
} 

func dismissFullscreen(_ sender: UITapGestureRecognizer) { 
    sender.view?.removeFromSuperview() 
} 

回答

1

添加到您的扩大()方法:

self.navigationController?.setNavigationBarHidden(true, animated: true) 

而且在dismissFullscreen()方法:

self.navigationController?.setNavigationBarHidden(false, animated: true) 

也可以创建新的视图控制器,通过图像将它(与SEGUE如)并将其添加到新的ViewController的viewDidLoad()中:

self.navigationController?.hidesBarsOnTap = true 
1

因此,这里是你如何能做到这一点:

class ViewController: UIViewController { 

    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let tapImageScrollView = UITapGestureRecognizer(target: self, action: #selector(imageTapped(_:))) 
     imageView.isUserInteractionEnabled = true 
     imageView.addGestureRecognizer(tapImageScrollView) 
    } 

    func imageTapped(_ sender: UIGestureRecognizer) { 
     if self.navigationController?.navigationBar.isHidden == false { 
      self.navigationController?.navigationBar.isHidden = true 
     } else { 
      self.navigationController?.navigationBar.isHidden = false 
     } 
    } 
} 

所以基本上添加UITapGestureRecognizerimageView,并在imageTapped功能,您检查navigationBar没有隐藏,那么你要显示的图像并隐藏navigationBar,如果再次点击imageView,您想再次显示navigationBar

因此只需将imageTapped中的逻辑添加到您的dismissFullscreen函数中即可。