首页 文章

如何在点击图像时隐藏导航栏

提问于
浏览
1

一旦我的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()
}

2 回答

  • 1

    将其添加到您的expand()方法:

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

    并在dismissFullscreen()方法中:

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

    或者您可以创建新的ViewController,将图像传递给它(例如使用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
            }
        }
    }
    

    因此,基本上将 UITapGestureRecognizer 添加到 imageView 并在 imageTapped 函数中检查 navigationBar 是否未隐藏,然后您要显示图像并隐藏 navigationBar ,如果再次单击 imageView ,则需要再次显示 navigationBar .

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

相关问题