簡體   English   中英

iOS5 setBrightness不適用於applicationWillResignActive

[英]IOS5 setBrightness didn't work with applicationWillResignActive

我使用[[UIScreen mainScreen]setBrightness: ] (在sdk 5.0中)更改了我的應用程序中的系統背景光。

以下步驟適用於我的應用

  1. 激活應用程序,獲取默認的系統亮度,然后另存為sysBright

  2. 使用我的應用程序更改亮度,更改亮度,然后另存為appBright

  3. 使用主屏幕按鈕或鎖定按鈕的ResignActive應用程序,將亮度設置為sysBright (步驟1的值,系統默認亮度)。

  4. 再次啟用應用。 然后將重復上述步驟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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM