我最近正在开发我的应用程序,并希望改变背光的亮度。然后,我想在退出应用程序时将背光级别恢复为原始设置。这是代码:
#include "GraphicsServices.h"
- (void) viewWillAppear:(BOOL)animated
{
NSNumber* bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel"), CFSTR("com.apple.springboard")); // To retrieve backlight settings
prevBacklightLevel = [bl floatValue];
GSEventSetBacklightLevel(0.5f);
}
// Other code here...
- (void)applicationWillTerminate
{
GSEventSetBacklightLevel(prevBacklightLevel); // To restore to original level
}
在加载应用程序时背光会正确变化,但当用户退出时,背光仍然保持在应用程序设置的水平......多么不方便!
可以帮助我解释为什么这不能按预期工作,我做了什么明显的错误吗?
我在网上找不到有关此问题的更多信息。
ViewController.h需要
#import "GraphicsServices.h"
也
编辑//任何人都可以帮助解决这个问题:
当应用程序关闭时,背光级别会发生变化,但总是为0,无论应用程序运行之前的状态如何。由于某些原因,bl可能总是0?
非常感谢,
斯图
答案 0 :(得分:1)
发现了答案。这是一个非常基本的错误......愚蠢的错误。我有:
- (void)applicationWillTerminate
ViewController.m中的而不是AppDelegate.m
它现在完美无缺。
我希望这可以帮助那些有类似问题的人,
斯图
答案 1 :(得分:1)
控制应用程序内的亮度是一个有趣的想法。但是,使用此字符串将导致拒绝。 (参见link。)
嗯,...我不知道如何在用户退出后恢复级别。因此,让我向您介绍两个API。它们是Mac OS X上的方式。
CFPreferencesSetAppValue()
和CFPreferencesAppSynchronize()
如果你解决了这个问题,请为其他开发者写下正确的代码,包括我。 ; - )