ios - 如何使用 swift 在点击 View 时隐藏 UI 元素?

标签 ios swift user-interface uigesturerecognizer

正如 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 中的所有按钮/工具。这样,在父级 UIViewtouchesEnded 上,您可以隐藏子级 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/

相关文章:

ios - 纯文本之后的下一个最佳便捷数据存储?

ios - 使用 segue ios 恢复 View 状态

ios - 如何使 UIView 作为 ScrollView 工作

ios - SwiftUI - 具有透明背景的按钮

python - 如何尽可能忽略GUI而不渲染APP较少的GUI开发人员友好

java - 单击按钮打开新面板

ios - Swift 中的像素数组到 UIImage

ios - 在循环中更改标签字体大小不会更改文本的大小

arrays - 更新到 Xcode 7 后出现错误

c++ - 如何为 C++ OpenCV 应用程序创建简单的交互式 GUI?