是否可以对iOS 5.1+上的屏幕亮度变化进行动画处理?我正在使用[UIScreen mainScreen] setBrightness:(float)],但我认为这种突然的变化很丑陋。

最佳答案

我不知道这是否可以通过其他方式实现“动画”,但是您可以自己完成。
例如,以下示例代码已连接到UI中的“全亮”和“半亮”按钮。它使用 performSelector ... afterDelay 每10毫秒将亮度更改1%,直到达到目标亮度。您将根据一些实验来选择合适的变化率。我认为实际上刷新率是60 hz,因此以小于1/60秒的间隔进行更改可能没有意义(我选择示例率是为了获得很好的数学效果)。尽管您可能想在非UI线程上执行此操作,但它不会阻止UI。

- (IBAction)fullBright:(id)sender {
    CGFloat brightness = [UIScreen mainScreen].brightness;
    if (brightness < 1) {
        [UIScreen mainScreen].brightness += 0.01;
        [self performSelector:@selector(fullBright:) withObject:nil afterDelay:.01];
    }
}

- (IBAction)halfBright:(id)sender {
    CGFloat brightness = [UIScreen mainScreen].brightness;
    if (brightness > 0.5) {
        [UIScreen mainScreen].brightness -= 0.01;
        [self performSelector:@selector(halfBright:) withObject:nil afterDelay:.01];
    }
}

关于ios - 如何使用淡入淡出动画设置屏幕亮度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15840979/

10-09 21:04