2017-01-23 2 views
2

Я работаю над приложением Swift 3, которое будет работать на устройстве неограниченное время. Это очень напряжено для устройства, и я хотел бы выключить дисплей, пока не активирую событие, чтобы снова включить его.Отключить экран iOS программно

Я могу установить isProximityMonitoringEnabled, чтобы экран устройства не работал и приложение работало в фоновом режиме с закрытым сенсором. Однако экран не включается, когда я устанавливаю его на false (он даже не включается, если я перейду к другому виду программно), пока не сниму крышку.

UIDevice.current.isProximityMonitoringEnabled = true; 

На данный момент я уменьшаю яркость экрана до 0.0, когда он находится в режиме ожидания.

UIScreen.main.brightness = CGFloat(0.0) 

Я не против использования частных API, как ответ на здесь https://stackoverflow.com/a/12944387/1509698 говорит. Но для жизни меня я не могу конвертировать, что Swift или найти фрагмент кода работает на прошивкой 10.

+0

Самый простой способ, вероятно, написание цели -c для частного api в этой ссылке, которую вы указали, и называть ее быстрой. – ptoinson

+0

Хотя этот ответ довольно старый и может не работать с текущими версиями iOS. Один из чертей частного API. Другие идеи: http://stackoverflow.com/questions/1679814/iphone-phone-goes-to-sleep-even-if-idletimerdisabled-is-yes/29256860#29256860 – ptoinson

ответ

0

Попробуйте это расширение, это работает для меня

import UIKit 
extension UIScreen 
{ 
    static func setMainBrightness(brightness: CGFloat) 
    { 
     guard (0...1).contains(brightness) else 
     { 
      print("Attempt to set the screen brightness to an invalid value: \(brightness) should be between 0 and 1 inclusive.") 
      return 
     } 
     self.main.brightness = brightness 
    } 
} 
+0

Не устанавливает ли это яркость? Мне нужно полностью отключить экран, а затем разбудить его позже. – mimmi

Смежные вопросы