14

我已经设法确保 iPhone 不会自动锁定使用:

    [[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ];

但是如何在一定时间后使屏幕变暗?

谢谢...

编辑:

认为我自己找到了解决方案:

在视图控制器中使用此方法通过添加具有 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];
}

或者,可能会冒险(但苹果可能会拒绝提交):

[(id)[UIApplication sharedApplication] setBacklightLevel:1.0f];

这是一个私有 API,但不应该使用......

4

2 回答 2

26

从 iOS 5 开始,该类中有一个公共 API UIScreen。它有一个brightness可以设置的属性。对于那些您可能想要比实际背光允许的更暗的情况,有一个wantsSoftwareDimming属性会自动放置一个半透明层,这将使外观看起来比硬件更暗。这与您使用 translucent 提出的方法非常相似UIView。应该注意的是,使用您的解决方案或软件调光 API 不应与许多动画一起使用,因为您将在所有 alpha 混合中付出性能损失。

请参阅UIScreen 类参考

于 2011-11-22T22:59:32.823 回答
3

在 iOS 7 及更高版本中:

yourViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed;
于 2014-10-10T14:07:06.827 回答