Closed. This question needs to be more focused。它目前不接受答案。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post
三年前关闭。
我想制作一个用Swift编程的iPhone应用程序,随着时间的推移,它可以在不同强度之间切换手电筒。这样做的目的是复制电池电量低的手电筒。
我希望它像一个“时间线”,强度会在不同强度之间衰减,如:
0分钟:100%
100分钟:0%
我时不时地想让手电筒闪动一下,让它看起来更像是一个低电量的手电筒。可能是这样的:
30分钟:70%
30分1秒:100%
30分2秒:70%
30分3秒:20%
30分6秒:70%
我已经读过如何打开手电筒,以及如何制作计时器(使用hereNSTimer,但我不知道如何将它们结合起来,以使手电筒强度随时间而变化。
最好的方法是什么?
提前谢谢你!

最佳答案

使用功能setTorchModeOnWithLevel设置音量,您可以使用计时器设置音量变化的时间。
下面是一个如何做到这一点的示例(在全新iOS单视图应用程序的AppDelegate中实现):

  var timer: NSTimer?

  func applicationDidBecomeActive(application: UIApplication) {
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "delayedAction", userInfo: nil, repeats: true)
  }

  let maxLightLevel = 5
  var lightLevel = 5

  func delayedAction() {
    guard let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
      else {
        timer?.invalidate()
        return
    }
    if let _ = try? device.lockForConfiguration() {
      defer { device.unlockForConfiguration() }
      if lightLevel == 0 {
        timer?.invalidate()
        device.torchMode = .Off
      }
      else {
        try! device.setTorchModeOnWithLevel(Float(lightLevel)/Float(maxLightLevel))
      }
      --lightLevel
    }
  }

这段代码只是一个粗略的示例,应该添加适当的行为来处理切换应用程序、抛出异常等。

关于ios - 随着时间的推移更改iPhone手电筒强度(快速),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34497357/

10-10 20:52