正如 navigationController?.hidesBarsOnTap = true
隐藏导航栏一样,我如何通过点击 View 隐藏常规 UI 元素,如按钮、标签等?我从头开始制作了一个 PDF 查看器,现在我需要一种方法来隐藏 View 上的 UI 元素,就像 iPhone 上的照片应用程序一样。
这是我尝试使用的代码,但没有成功:
override func viewDidAppear(animated: Bool) {
var dismissTap = UITapGestureRecognizer(target: self, action: Selector("dismissViewElements:"))
self.view.addGestureRecognizer(dismissTap)
}
func dismissViewElements(gesture: UITapGestureRecognizer){
if gesture.state == UIGestureRecognizerState.Began {
self.backButton.alpha = 0
}
}
任何建议都会很有帮助。
最佳答案
我想我明白你想要什么。在点击 View 时,您想隐藏一堆“工具”(编辑按钮等)。想到的应用程序是 iPhone 附带的照片查看器应用程序,当您点击一次时,编辑/裁剪/后退按钮等...全部隐藏。
最简单的方法(在我看来)是将所有这些 ui 控件添加到父 View ,在一个单独的“层”上。并让该层成为顶层。当用户点击此 View 时,(只要它不是按钮或父 View 内的其他东西) View 就会消失(连同其所有子按钮/控件/等)
我个人会使用 touchesEnded,因为它真的很容易实现。下面是 touchesEnded
方法的样子(或多或少)
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
self.hidden = true
//where parentView is the parent view, whatever you named it
}
我想你应该准备好了
另外,我忘了说,你应该子类化 UIView
并在 UIView
的这个特定实现中包含 touchesEnded
并且在 Storyboard,您可以单击作为父级使用的 UIView
,并为其指定您命名的子类的类类型
我在 github 上为您推送了一个快速项目说明这个想法
更新 - 使元素再次出现
你可以做一些非常相似的事情。有一个父 UIVIew
,其中有一个子 UIVIew
,以及子 UIView
中的所有按钮/工具。这样,在父级 UIView
的 touchesEnded
上,您可以隐藏子级 UIView
并在 touchesEnded
上再次使子级UIView
重新出现。您在 touchesEnded
中所要做的就是:
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
childUiView.hidden = !childUiView.hidden
}
这样,每次您触摸它时,它都会将 hidden
分配给与原来相反的位置。
关于ios - 如何使用 swift 在点击 View 时隐藏 UI 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555680/