2016-12-09 126 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