не могу установить яркость, когда приложение находится в состоянии resignActive - PullRequest
0 голосов
/ 22 апреля 2019

Я уменьшаю яркость экрана до ее исходного значения, когда приложение вводит фон, более конкретно, я использую этот метод в applicationWillResignActive, но почему-то код не работает, где я пропускаю?

Код увеличения яркости такой же, как и код уменьшения, но последний не работает ........

Objective-C
//increase light
-(void)graduallyHighlightScreen{
    CGFloat currentBrightness = [UIScreen mainScreen].brightness;
    if (currentBrightness >= ScanBrightness){
        return;
    }else{
        if (!_highlighted) {
            _originalBrightness = currentBrightness;
            _highlighted = YES;
            [self createLightChangeTimer];
        }else{
            return;
        }
    }
}

//decrease light(I call this in applicationWillResignActive)
-(void)graduallyDarkenScreen
{
    if (_highlighted) {
        [self createLightChangeTimer];
        _highlighted = NO;
    }else{
        return;
    }
}

//create light change timer
-(void)createLightChangeTimer
{
    self.endCount = 0;
    [self.lightChangeTimer invalidate];
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.01
                                                      target:self
                                                    selector:@selector(changeLight)
                                                    userInfo:nil
                                                     repeats:YES];
    [[NSRunLoop currentRunLoop]addTimer:timer forMode:NSDefaultRunLoopMode];
    timer.fireDate = [NSDate date];
    self.lightChangeTimer = timer;
}

-(void)changeLight
{
    CGFloat increment = (ScanBrightness - _originalBrightness) / BrightnessChangeCount;

    //stop increasing 
    if (self.highlighted && (fabs([UIScreen mainScreen].brightness - ScanBrightness) < 0.001 ||  self.endCount == BrightnessChangeCount))
    {
        [self.lightChangeTimer invalidate];
    }
    //stop decreasing
    else if (!self.highlighted && (fabs([UIScreen mainScreen].brightness - _originalBrightness) < 0.001 ||  self.endCount == BrightnessChangeCount))
    {
        [self.lightChangeTimer invalidate];
    }
    //increasing brightness
    else if(self.highlighted)
    {
        [UIScreen mainScreen].brightness += increment;
        self.endCount ++;
    }
    //decreasing brightness(this won't work when app is in background)
    else if (!self.highlighted)
    {
        [UIScreen mainScreen].brightness -= increment;
        self.endCount ++;
    }
}

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

...