使用Swift在iOS中触摸/触摸时调整屏幕亮度

时间:2016-12-09 13:38:03

标签: ios iphone swift

我是iOSSwift的新手,在我解释时请耐心等待,如果有什么不清楚请告诉我,我会解释。

我有iOS个应用,它包含一些UIImagesUIButtons等等。触摸后它们互动。

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

我发现以下行可用于调整屏幕亮度:

UIScreen.main.brightness = CGFloat(0.5)

但我不知道如何在屏幕上的任何地方检测到触摸(不会打扰所有其他按钮等...),也可以将其与计时器结合使用。

(我的应用程序仅用于特定目的,不会分发,只能在iOS10的iPhone 7设备上运行)

1 个答案:

答案 0 :(得分:0)

嗯,为此目的有一个API

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

  

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

     

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

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

<强>更新
请参阅runnable Xcode 8 project以获取主意。运行应用程序并尝试按下视图及其外部,您将在调试器控制台中看到有关触摸视图信息的日志。希望它会对你有所帮助。