如何以编程方式关闭自动亮度?

Posted

技术标签:

【中文标题】如何以编程方式关闭自动亮度?【英文标题】:How to turn off Auto-Brightness programmatically? 【发布时间】:2013-01-24 19:36:18 【问题描述】:

我想知道是否有一种方法可以将 ios 设备上的“自动亮度”选项切换到关闭位置,如果有,它是什么?

【问题讨论】:

如果没有,设置应用程序将无法执行此操作。所以是的。 @H2CO3 我不认为这是一个是/否问题 @Artem:当我写那条评论时,确实如此。现在不是了。 @АртёмЦарионов 不,肯定不是。对于造成的混乱,我深表歉意。 @H2CO3 你知道我在哪里可以访问这种方法吗?任何特定的 API 或框架? 【参考方案1】:

我无法与任何权威人士交谈(无法证明是否定的,等等),但这似乎不像 Apple 会让 3rd 方应用程序能够修改的设置。当然,Settings.app 会修改它,但这并不意味着有公共 API 可以做到这一点。由于这篇文章中没有jailbreak 标签,我将继续假设提问者在询问公共 API。我会选择“你不能”。

【讨论】:

您要小心,因为您知道我倾向于不赞成“这是不可能的!!!”-没有免责声明的帖子。好习惯! 感谢您的回复。我实际上指的是公共 API。 我似乎错了! wantsSoftwareDimmingFTW。 (或者可能不是?)【参考方案2】:

当您在应用程序内部时可以调整亮度,并且它在 UIScreen 类中可用 -

这是文档 - http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScreen_Class/Reference/UIScreen.html#//apple_ref/occ/instp/UIScreen/brightness

但 Apple 的官方公共 API 不允许 iOS 应用访问“设置”应用中的“常规”设置。因此,您将无法更改设置应用内的切换按钮。

【讨论】:

【参考方案3】:

Objective-C

[[UIScreen mainScreen] setBrightness:1.0];

是要走的路。是的,您可以以编程方式进行。只需传递 0.0 到 1.0 之间的值即可。根据苹果的说法是有效的,你不会遇到任何问题。

Swift 3+

UIScreen.main.brightness = CGFloat(1.0)

https://discussions.apple.com/thread/2009141?tstart=0

【讨论】:

这并没有回答原来的问题。【参考方案4】:

但您可以定期检查亮度,并在您的应用程序运行时将其调整到您希望的亮度(如果您真的需要)。

【讨论】:

应该通过收听brightnessDidChangeNotification来代替。 这一定是这样做的@meaning-matters 我不知道当时有这样的通知。 查看我的回复以了解如何实施。【参考方案5】:

根据希望的回答,对于那些希望在屏幕自动改变亮度时得到通知的人:

func trackBrightness()    
    // Track brightness changes
    NotificationCenter.default.addObserver(self, selector: #selector(brightnessDidChange), name: UIScreen.brightnessDidChangeNotification, object: nil)

    
@objc func brightnessDidChange() 
    let newBrightness = UIScreen.main.brightness
    // Do something

【讨论】:

以上是关于如何以编程方式关闭自动亮度?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何以编程方式更改iPhone屏幕的亮度?

以编程方式更改iphone屏幕的亮度? [重复]

有没有办法以编程方式调整屏幕亮度?

电脑屏幕亮度能否自动调节

以编程方式淡化颜色

win10 关闭屏幕自动亮度