【问题标题】:How to hide navigation bar when image is tapped点击图像时如何隐藏导航栏
【发布时间】:2017-05-07 07:48:50
【问题描述】:

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

【问题讨论】:

    标签: ios iphone swift uinavigationbar


    【解决方案1】:

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

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

    而在dismissFullscreen()方法中:

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

    或者您可以创建新的 ViewController,将图像传递给它(例如使用 segue)并将其添加到新 ViewController 的 viewDidLoad() 中:

    self.navigationController?.hidesBarsOnTap = true
    

    【讨论】:

      【解决方案2】:

      所以你可以这样做:

      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 函数即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多