用户点击全屏图像时隐藏导航栏和工具栏?

时间:2015-12-14 18:47:28

标签: ios swift uigesturerecognizer

我需要有关设置此功能的帮助。从第一视图控制器,用户点击缩略图图像以转到该全景显示图像的视图控制器。我已经自定义了导航栏的外观,使其看起来与应用程序的其他部分不同,因此相同的导航栏没有与之前的链接相关联。

我设法显示导航栏我想要的方式,所有按钮也按照我想要的方式工作。现在我只想在视图出现时以及当用户点击时隐藏导航栏以显示导航栏,甚至可能在该过程中将背景颜色从黑色更改为白色。这就是我所拥有的:

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")
}

到目前为止,我的调试器打印了" Tapped Screen"当我点击时,我只是在找一些隐藏导航栏的代码。我尝试了很多不同的方式,我知道它会是:

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

但我似乎无法将它们放在正确的位置或其他地方,可能是因为我的自定义导航栏或因为我有来自前一个视图控制器的自定义segue?我正在使用所有最新版本的swift,xCode等。提前感谢!

1 个答案:

答案 0 :(得分:0)

让我在viewDidLoad作品中设置navigationController?.hidesBarsOnTap = true。每当我点击屏幕中的任何地方时,它会隐藏条形图,然后分别显示它们。

如果您想隐藏它们而不再显示它们,可以将tappedScreen放入func tappedScreen() { navBar!.hidden = true; } 功能。

如果您想要其他情况,请告诉我们!

编辑: 我知道了!! :)

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

<script src="https://js.braintreegateway.com/v2/braintree.js"></script>