我不希望手机进入睡眠状态,所以我正在使用:
[ [ UIApplication sharedApplication ] setIdleTimerDisabled:YES ] ;
但是我确实需要手机将屏幕灰化以免浪费电池。我已经看到了这个问题How can I dim the view in an iPhone application?,但需要更多细节。
我正在尝试这样的事情:
将opaqueWindow设置为最前面(加载了320 x 480黑色图像)
[opaqueWindow makeKeyAndVisible];
[ opaqueWindow setAlpha:1.00 ] ;
[ mainWindow setAlpha:0.10 ] ;
并尝试返回mainWindow并将其设置在最前面(选择器控件和一些标签):
[ opaqueWindow setAlpha:0 ] ;
[mainWindow makeKeyAndVisible];
[ mainWindow setAlpha:1.00 ] ;
我的应用中只能有一个关键窗口,对吗?所以当mainWindow成为键时,则opaqueWindow不会,反之亦然。我按如下方式创建opaqueWindow并访问mainWindow:
opaqueWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen ] bounds]];
opaqueView = [[UIView alloc] init];
[opaqueWindow addSubview:opaqueView];
mainWindow = [ myApplication keyWindow ] ;
即使我尝试让我的mainWindow再次处于活动状态,我的控件仍然显示为灰色,而opaqueWindow似乎仍然可以控制。
我是iphone开发的新手,我一直在寻找Cocoa Touch for iphone 3开发者参考和其他一些书籍。
我将不胜感激任何帮助或建议。
谢谢你!Piesia
编辑:我假设opaqueWindow需要将按钮单击传递给mainWindow,而opaqueWindow是关键。我是从opaqueWindow的按钮处理程序中调用mainWindow的按钮处理程序还是有更好的方法来执行它。谢谢! P上。
答案 0 :(得分:8)
从iOS 5开始,您可以使用公共API:
[[UIScreen mainScreen] setBrightness:1.0];//replace 1.0 with any value...
使用不透明度框架节拍...
答案 1 :(得分:4)
虽然从可用性的角度来看它可能有意义,但我怀疑用灰色视图覆盖窗口实际上可以改善电池运行时间。您将不得不调暗背光,这是主要的能量消耗。这只能通过越狱手机或私人API(这将阻止您的应用程序被Apple批准)。
在视图控制器中使用此方法,通过添加50%alpha的黑色视图来调暗。确保设置userInteractionEnabled = NO以将事件传递给基础视图。
- (IBAction)dim:(id)sender {
UIView *dimView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
dimView.backgroundColor = [UIColor blackColor];
dimView.alpha = 0.5f;
dimView.userInteractionEnabled = NO;
[self.view addSubview:dimView];
}
如果您想提高运气并冒被拒绝的风险,请尝试使用此私有API调用:
[(id)[UIApplication sharedApplication] setBacklightLevel:1.0f];