2012-10-22 85 views
1

我已经看到以前的文章中无法确保您可以将屏幕亮度恢复到用户在您的应用程序中调整它之前的值(即捕获亮度级别屏幕在你的应用程序加载之前,并在应用程序终止或进入后台之前重置为该屏幕亮度)。看起来,这可能是Apple为了避免在应用程序终止时用户不知道的重大改变而做的。但看起来苹果以某种方式将其与Passbook应用程序拉开了关系。请注意,当您启动Passbook应用程序时,屏幕亮度会增加,以便扫描仪可以更好地读取条形码,但是当您按Home按钮并退出Passbook应用程序时,屏幕亮度将恢复到之前的状态。如果苹果能做到这一点,为什么我们不能?任何人都知道Passbook应用如何做到这一点?在iOS中终止应用程序时恢复屏幕亮度

+0

苹果能做到这一点,因为这是他们的平台。 – JustSid

+0

成为国王真好! – 1wayswim

回答

2

这是一个非常简单的机制,是在iBooks 1.5+的基础上引入的,最后在iOS 5中增加了+[UIScreen brightness] API后才能使用。因为它接受0.0-1.0的简单浮点数,一个简单的方法,并且可以在任何UIApplication委托方法中简单地进行恢复。事实上,我写了一个示例应用程序(OOH,Shiny),它可以在启动时恢复屏幕亮度,并在退出时保存它。

+1

明智地使用它,没有多少人喜欢他们的应用程序将屏幕亮度推到100%,或在重新启动时将其调暗到不可读的5%。 – CodaFi

+0

我其实是在寻找相反的东西。我想将应用程序关闭时打开应用程序之前的屏幕亮度恢复到原来的水平(例如,如果应用程序的用户决定在应用程序中始终调整屏幕亮度,我希望亮度返回到用户关闭应用程序时进入应用程序之前的内容)。问题是,似乎没有办法可靠地确保应用程序总是在终止之前恢复“保存的”屏幕亮度值。有几个人猜测,苹果可能会阻止开发人员这样做,以避免突然的变化。 – 1wayswim

+0

这不完全是“相反”,就像对示例应用程序的修改一样。删除滑块,在defaults.plist中建立一个您想要的亮度设置值,然后将恢复代码放入其中一种终止方法中。 – CodaFi

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]; 
} 
+0

似乎只能在iOS 8上恢复... – jjxtra

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) 
} 
相关问题