2016-11-26 17 views
0

페이드 효과로 화면 밝기를 변경하는 것이 가능한지 궁금합니다. 화면 밝기는 예를 들어 UIScreen.mainScreen().brightness = CGFloat(1)을 사용하여 변경할 수 있지만 현재 밝기를 즉시 변수로 변경합니다.UIScreen 밝기가 변경 될 때 애니메이션 페이드 효과 추가 (빠른)

밝기 변화를 활성화 할 수 있는지 알고 싶습니다. 예를 들어, 현재의 밝기는 0.2이고, 0.8까지 변경 될 때까지 0.1의 증가분으로 페이드 효과로 바꾸고 싶습니다.

신속한 2.3에서이 작업을 수행 할 수 있습니까?

+0

나는 당신이 내 대답을 upvote 확실하지 오전. 당신의 대답은 애니메이션을 달성하기 위해 타이머를 사용하는 나쁜 연습입니까? 그리고 화면 밝기가 아닌 알파 값을 변경하는 것에 대해 생각해보십시오. – Joe

답변

1

UIView 및 CALayers에 대한 준비된 애니메이션 메서드가 있습니다. 그러나 귀하의 경우 UIScreen 속성에 애니메이션 효과를 적용하여 타이머를 사용하여 수동으로 시간 간격에 따라 밝기를 0.1에서 0.8로 점차 변경해야합니다.

var timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.update), userInfo: nil, repeats: true) 

    func update() { 
     if (UI.mainScreen().brightness >= 0.8) { 
      Timer.invalidate(timer) 
     } 
     else { 
     UIScreen.mainScreen().brightness += 0.1 
     } 
    } 

이렇게하면 밝기가 0.4 초마다 0.1로 변경됩니다. 0.8 이상이되면 멈 춥니 다. timerInterval 매개 변수로 재생하면 점진적으로 또는 즉각적인 효과를 낼 수 있습니다.

1

참고 :view alpha 값을 화면 밝기로 변경하는 대신 변경하는 것이 좋습니다.

viewDidLoad 안에 간단한 방법을 시도하여 애니메이션을 완성하십시오. 여전히 밝기 방법을 사용하려면 .code와 거의 같습니다.

self.view.alpha = 0.2 // UIScreen.mainScreen().brightness = 0.2 
//animation duration value is changeable... 
UIView.animate(withDuration: 3, delay: 0, options: UIViewAnimationOptions.curveEaseInOut, animations: { 
self.view.alpha = 0.8 // UIScreen.mainScreen().brightness = 0.8 
}, completion: nil)