2015-12-14 86 views
0

我需要设置此功能的帮助。从第一个视图控制器中,用户点击缩略图图像以转到此视图控制器,该控制器将全屏显示图像。我已经定制了导航栏的外观,以便它与应用程序的其余部分看起来不同,所以相同的导航栏未与以前的链接关联。用户点击全屏图像时隐藏导航栏和工具栏?

我已经设法显示导航栏如何我想要它和所有的按钮工作,我也希望他们。现在我只想在视图出现时隐藏导航栏,当用户点击,显示导航栏时,甚至可能会在该过程中将背景颜色从黑色更改为白色。以下是我有:

var profileImage: UIImage! 
var tap = UITapGestureRecognizer() 

@IBOutlet var scrollView: UIScrollView! 
@IBOutlet var fullSizeImage: UIImageView! 

override fun viewWillAppear(animated: Bool) { 

    self.fullSizeImage.image = profileImage 
    self.scrollView.minimumZoomScale = 1.0 
    self.scrollView.maximumZoomScale = 6.0 

    tap.addTarget(self, action: "tappedScreen") 
    fullSizeImage.addGestureRecognizer(tap) 
    fullSizeImage.userInteractionEnabled = true 

    let navBar = UINavigationBar(frame: CGRectMake(0, 20, self.view.frame.size.width, 44)) 
     navBar.barTintColor = UIColor.whiteColor() 
     navBar.delegate = self 

     let navItem = UINavigationItem() 
     navItem.title = "Profile Image" 


     let leftButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelButton:") 
     leftButton.tintColor = UIColor(red: 37/255, green: 94/255, blue: 67/255, alpha: 1.0) 

     let rightButton = UIBarButtonItem(title: "Gallery", style: UIBarButtonItemStyle.Plain, target: self, action: "galleryButton:") 
     rightButton.tintColor = UIColor(red: 37/255, green: 94/255, blue: 67/255, alpha: 1.0) 

     navItem.leftBarButtonItem = leftButton 
     navItem.rightBarButtonItem = rightButton 

     navBar.items = [navItem] 

     self.view.addSubview(navBar) 

} 

fun tappedScreen() { 

    print("Tapped Screen") 
} 

到现在为止我的调试器输出“抽头屏幕”当我点击,所以我只是在寻找一些代码,会隐藏自己的导航栏。我尝试了很多不同的方式,我知道它的将是两种:

navigationController?.barHideOnTapGestureRecognizer 
// OR 
navigationController?.hidesBarsOnTap = true 
// OR 
navigationController?.setNavigationBarHidden(true, animated: true) 

但我似乎不能把他们在正确的地方或什么的,也许是因为我的自定义导航栏或因为我有从以前的视图控制器的自定义segue?我正在使用所有最新版本的swift,xCode等。预先感谢!

回答

0

对我来说navigationController?.hidesBarsOnTap = trueviewDidLoad的作品。每次我点击屏幕上的任何地方时,它都会隐藏这些条,然后分别显示它们。

如果你想隐藏它们而不再显示它们,你可以在你的tappedScreen函数中加入navigationController?.hidesBarsOnTap = true

如果你想要其他场景,请让我知道!

编辑: 我明白了! :)

好吧你想隐藏你的navBar而不是navigationController!所以你可以使用这个:

func tappedScreen() 
{ 
    navBar!.hidden = true; 

} 
+0

感谢您的反馈!不幸的是,这仍然没有伎俩..我把navigationController?.hidesBarsOnTap = true在viewDidLoad,viewWillAppear和tappedScreen,都没有这样做..任何其他建议? – bme003

+0

这个工作!但是..这只适用于当我将它设置在viewWillAppear和tappedScreen()函数不能改变隐藏的值。我们很近!此外,我需要为我的底部工具栏最终设置相同的功能。 – bme003

+0

所以我为不同场景组合了一个小算法,当我想让navBar隐藏或显示时。我可以浏览并观看每个场景的工作,但现在唯一不起作用的是navBar.hidden只能工作一次,它不能保持切换。我需要一个解决方法。 – bme003