2

我已经看到了关于无法确保您可以将屏幕亮度恢复到用户在您的应用程序中调整它之前的值的先前帖子(即在您的应用程序加载之前捕获屏幕的亮度级别并重置为该屏幕亮度在您的应用程序终止或进入后台之前)。看来这可能是 Apple 故意做的事情,以免在应用程序终止时做出用户不知道的巨大变化。但苹果似乎通过 Passbook 应用程序以某种方式实现了这一目标。请注意,当您启动 Passbook 应用程序时,屏幕亮度会增加,以便扫描仪更好地读取条形码,但当您按下主页按钮并退出 Passbook 应用程序时,屏幕亮度会恢复到之前的状态。如果苹果能做到这一点,为什么不能?我们?有人知道 Passbook 应用程序是如何做到这一点的吗?

4

3 回答 3

2

这是一个非常简单的机制,在 iBooks 1.5+ 的某个时候引入,最终在 iOS 5 中添加了 API 后可供所有人使用+[UIScreen brightness]。因为它接受 0.0-1.0 的简单浮点数,所以存储它很容易,和恢复它可以在任何 UIApplication 委托方法中轻松完成。事实上,我编写了一个示例应用程序(OOH,Shiny),它在启动时恢复屏幕亮度,并在退出时保存。

于 2012-10-22T02:23:39.353 回答
1
static CGFloat s_brightness = 0.5f;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    s_brightness = [[UIScreen mainScreen] brightness];
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
    [[UIScreen mainScreen] setBrightness:s_brightness];
}
于 2014-09-20T20:28:57.777 回答
0

在斯威夫特

static var defaultBrightNess:CGFloat = 0.5;
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 
{
        AppDelegate.defaultBrightNess = UIScreen.main.brightness;
        UIScreen.main.brightness = 1.0;
        return true
}

func applicationWillEnterForeground(_ application: UIApplication) {
        UIScreen.main.brightness = 1.0
}

func applicationWillResignActive(_ application: UIApplication) {
        UIScreen.main.brightness = CGFloat(AppDelegate.defaultBrightNess)
}
于 2017-12-05T14:39:00.113 回答