2012-10-22 83 views
1

我已經看到以前的文章中無法確保您可以將屏幕亮度恢復到用戶在您的應用程序中調整它之前的值(即捕獲亮度級別屏幕在你的應用程序加載之前,並在應用程序終止或進入後臺之前重置爲該屏幕亮度)。看起來,這可能是Apple爲了避免在應用程序終止時用戶不知道的重大改變而做的。但看起來蘋果以某種方式將其與Passbook應用程序拉開了關係。請注意,當您啓動Passbook應用程序時,屏幕亮度會增加,以便掃描儀可以更好地讀取條形碼,但是當您按Home按鈕並退出Passbook應用程序時,屏幕亮度將恢復到之前的狀態。如果蘋果能做到這一點,爲什麼我們不能?任何人都知道Passbook應用如何做到這一點?在iOS中終止應用程序時恢復屏幕亮度

+0

蘋果能做到這一點,因爲這是他們的平臺。 – JustSid

+0

成爲國王真好! – 1wayswim

回答

2

這是一個非常簡單的機制,是在iBooks 1.5+的基礎上引入的,最後在iOS 5中增加了+[UIScreen brightness] API後才能使用。因爲它接受0.0-1.0的簡單浮點數,一個簡單的方法,並且可以在任何UIApplication委託方法中簡單地進行恢復。事實上,我寫了一個示例應用程序(OOH,Shiny),它可以在啓動時恢復屏幕亮度,並在退出時保存它。

+1

明智地使用它,沒有多少人喜歡他們的應用程序將屏幕亮度推到100%,或在重新啓動時將其調暗到不可讀的5%。 – CodaFi

+0

我其實是在尋找相反的東西。我想將應用程序關閉時打開應用程序之前的屏幕亮度恢復到原來的水平(例如,如果應用程序的用戶決定在應用程序中始終調整屏幕亮度,我希望亮度返回到用戶關閉應用程序時進入應用程序之前的內容)。問題是,似乎沒有辦法可靠地確保應用程序總是在終止之前恢復「保存的」屏幕亮度值。有幾個人猜測,蘋果可能會阻止開發人員這樣做,以避免突然的變化。 – 1wayswim

+0

這不完全是「相反」,就像對示例應用程序的修改一樣。刪除滑塊,在defaults.plist中建立一個您想要的亮度設置值,然後將恢復代碼放入其中一種終止方法中。 – CodaFi

1
static CGFloat s_brightness = 0.5f; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    s_brightness = [[UIScreen mainScreen] brightness]; 
    return YES; 
} 

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    [[UIScreen mainScreen] setBrightness:s_brightness]; 
} 
+0

似乎只能在iOS 8上恢復... – jjxtra

0

在斯威夫特

static var defaultBrightNess:CGFloat = 0.5; 
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 
{ 
     AppDelegate.defaultBrightNess = UIScreen.main.brightness; 
     UIScreen.main.brightness = 1.0; 
     return true 
} 

func applicationWillEnterForeground(_ application: UIApplication) { 
     UIScreen.main.brightness = 1.0 
} 

func applicationWillResignActive(_ application: UIApplication) { 
     UIScreen.main.brightness = CGFloat(AppDelegate.defaultBrightNess) 
} 
相關問題