2011-11-29 75 views
2

爲什麼我不能在applicationDidEnterBackground或applicationWillResignActive中設置屏幕亮度?appdelegate方法中的setBrightness?

這是我的代碼:

- (void)applicationDidEnterBackground:(UIApplication *)application 
{   
    [[UIScreen mainScreen] setBrightness:1.0]; 
} 

無法理解......!它在applicationDidEnterForeground等工作,而不是當我關閉使用主頁按鈕的應用程序。

由於任何人可以幫助...

+0

如果在完全退出後亮度恢復爲默認值,以避免用戶感到沮喪,我不會感到驚訝。您的亮度可能會在很短的時間內正確設置。 –

+1

好的建議,但我不認爲這是它。我已經在應用程序中將亮度從高變爲低,並希望它在應用程序關閉時恢復原始亮度...... –

+0

這是不是已經發生了?據我所知,iOS將簡單地重置亮度本身。 –

回答

1

這可能是因爲您的應用程序放棄控制權交給操作系統,然後操作系統將根據用戶的全局設置控制亮度。如果您想要全局更改亮度設置,則必須訪問用戶的全球iphone設置並更改它們,但我不確定這是可能的。

當你設置上applicationDidEnterForeground亮度:您的應用程序是在控制了一遍,可以像亮度調節的東西。只要您的應用失去了該控制思想,操作系統就會接管並重新使設備符合用戶的全局設置。

希望有所幫助。

+0

是啊,聽起來你是對的。你能想到任何解決方法嗎?就像是在applicationWillResignActive或其他任何東西之前被調用的東西?難倒! –

+2

雖然...它進入背景,屏幕保持黑暗,雖然我的全局設置的亮度接近滿... –

+1

我不得不用一種荒謬的方式來做這件事。由於iOS的限制,降低代理方法的亮度是不可能的,因爲代理方法會導致應用程序處於非活動狀態。我使用了一個包含一個不透明度爲0.9的黑色矩形的imageview,並將其設置爲隱藏,而我希望我的應用程序變暗。狀態欄也被刪除了,因爲我無法使矩形變暗。 –

0

我敢肯定,這是與當前版本(該setBrightness調用有兩種applicationDidEnterBackground或applicationWillResignActive內無影響)的錯誤。

我目前做的是類似於你到什麼在 - 我的亮度設置爲1.0的應用程序處於活動狀態,然後在需要時通過修改一個黑色圖層的不透明度上的所有其他圖形的頂部降低亮度。這樣,如果用戶暫停應用程序,那麼他們的屏幕至少是亮的(而不是應用程序的任意亮度)。

當用戶鎖定他們的屏幕時,它將恢復到他們iPhone設置的亮度。