2016-12-09 124 views
1

我对iOSSwift的相当新颖,请耐心等待我解释,如果有任何不清楚的地方,让我知道,我会解释。在iOS中用Swift调整/触摸屏幕亮度

我有一个iOS的应用程序,它包括一些UIImages,UIButtons等,他们互动时触摸。

我想在应用程序未触摸(屏幕上的任何位置)一段时间后(例如说10秒)调暗屏幕,然后只要在UIScreen上的任何位置检测到触摸,我希望再次提高亮度。

我发现下面的行可以用来调节屏幕亮度:

UIScreen.main.brightness = CGFloat(0.5) 

,但我不知道如何来检测触摸在屏幕任意位置(而不会干扰其他所有的按钮等...),并将其与计时器相结合。

(我的应用程序仅适用于特定的目的,也不会被分配,而且只用一个iOS10 7 iPhone设备上运行)

+0

也许你可以在UIWindow上添加一个UITapGestureRecognizer – Arjuna

+0

看看http://stackoverflow.com/questions/37555013/swift-detect-touch-anywhere-on-the-screen –

回答

0

嗯,有用于该目的的API

func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?

返回视图中的层次结构(包括其本身),其含有一个指定点的接收器的最远后代。

该方法通过调用每个子视图的point(inside:with :)方法来确定哪个子视图应该接收触摸事件,从而遍历视图层次结构。如果point(inside:with :)返回true,那么类似遍历子视图的层次结构,直到找到包含指定点的最前面的视图。如果视图不包含该点,则视图层次结构的分支将被忽略。您很少需要自己调用此方法,但可以覆盖它以隐藏子视图中的触摸事件。

您需要创建要检测触摸的UIViewUIWindow的子类。
然后重写hitTest函数并在其中实现所需的逻辑。

更新:
见可运行Xcode 8 project进行了解。运行应用程序并尝试按下视图并在其外部,您将看到在调试器控制台中登录有关所触摸视图的信息。希望它能帮助你。

+0

感谢您的回答,但我有一个困难的时候undrestanding API可以提供一个简单的例子(不需要实现逻辑) – theAlse