![](/img/trans.png)
[英]applicationWillResignActive and setBrightness not working?
[英]IOS5 setBrightness didn't work with applicationWillResignActive
我使用[[UIScreen mainScreen]setBrightness: ]
(在sdk 5.0中)更改了我的應用程序中的系統背景光。
以下步驟適用於我的應用
激活應用程序,獲取默認的系統亮度,然后另存為sysBright
。
使用我的應用程序更改亮度,更改亮度,然后另存為appBright
。
使用主屏幕按鈕或鎖定按鈕的ResignActive應用程序,將亮度設置為sysBright
(步驟1的值,系統默認亮度)。
再次啟用應用。 然后將重復上述步驟1至3。
步驟3出了點問題,當我用鎖定按鈕將應用程序停用時,函數applicationWillResignActive
可以正常工作,它可以恢復亮度值( sysBright
)。
但是當我按下主頁按鈕時,它不再起作用。 亮度仍然是我在應用程序中更改的值。 ( appBright
)
有人對此有想法嗎? 謝謝你的幫助〜
這是代碼:
float appBright,sysBright;
- (void)applicationDidBecomeActive:(UIApplication *)application
{
sysBright = [[UIScreen mainScreen] brightness];
[[NSUserDefaults standardUserDefaults] setFloat:sysBright forKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:appBright];
}
//doesn't work when i ResignActive with the home button
- (void)applicationWillResignActive:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:sysBright];
}
iOS並非要保留應用內亮度值。 在應用程序退出活動,退出,崩潰等之后,它應該恢復系統值。因此,正式而言,無需在applicationWillResignActive中執行該操作。
但這不起作用。 這是一個錯誤。 實際上,如果您切換到另一個應用程序(兩次按主屏幕按鈕並選擇另一個應用程序),則可以使用
不要浪費時間,只需向Apple提交錯誤報告(我做的很好)。
解鎖屏幕可恢復默認的系統亮度。 只需按兩次電源按鈕並解鎖即可恢復原始亮度。
嘗試這個...
- (void)applicationWillResignActive:(UIApplication *)application
{
CGFloat brightness = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:brightness];
}
在某些情況下,您確實需要掛起該應用程序(使其進入后台,例如按“主頁”按鈕時),並且仍然保留您先前在屏幕上設置的亮度。
示例:我目前正在水下應用程序中(出於科學原因,它在防水的情況下使用iPhone拍攝照片),但我們無法訪問整個設備的屏幕。
水下外殼在非常特定的位置實現了3個機械“觸摸”按鈕,我們必須禁用自動鎖定功能,因為無法執行滑動手勢來解鎖設備。
當不使用應用程序時,我們仍然需要一種方法來保存電池壽命,即掛起應用程序並設置較低的屏幕亮度。
我們實施的解決方案是:
a)我們告訴用戶關閉設置中的自動亮度並禁用自動鎖定功能
b)我們將ApplicationDelegate類的亮度設置為100%:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Adjust Brightness to full
[[UIScreen mainScreen] setBrightness:1.0];
}
c)我們通過觸摸應用程序按鈕來執行以下代碼,以確保應用程序進入后台(不消耗CPU周期)並且亮度降低到可能的較低水平(節省電池):
[[UIScreen mainScreen] setBrightness:0.0]; // Set to low brightness
[[UIApplication sharedApplication] performSelector:@selector(suspend)]; // Simulate Home button
我希望這會對某人有所幫助。
PS:Apple Human界面指南是一回事,而實際應用程序的實際需求是另一回事(您無法預先預測或限制任何事情)。
根據Apple的DevForum的說法,這似乎是Apple不願意修復的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.