2014-04-30 48 views
2

有誰知道如何更改狀態欄的文字顏色?我想要它橙色。iOS7 - 是否可以更改狀態欄顏色?

我不是在談論普通的黑色或白色 UIStatusBarStyleLightContent;或UIStatusBarStyleBlackOpaque;管他呢。

+0

你不能把它變成橙色,除非你用橙色油漆蘸你的iphone:D –

+0

請大家,你不覺得我已經試圖在Google上找到解決方案嗎?但是,正如我所提到的,我正在尋找一種方法來更改TEXT顏色,而不是狀態欄的背景顏色。 – user1147981

+0

@Michael你還是RIP?和拉姆斯哈德請不要滿足他 –

回答

8

沒有記錄方式改變文本顏色爲橙色。但是,這絕對是可能的,因爲我剛剛嘗試過它並且工作正常。

免責聲明:這是所有沒有記錄的territorry ......它可能不會被批准,當你提交給應用程序商店。然而,你可能是幸運的......

在iOS中7,你可以這樣做:

/// sets the status bar text color. returns YES on success. 
/// currently, this only 
/// works in iOS 7. It uses undocumented, inofficial APIs. 
BOOL setStatusBarColor(UIColor *color) 
{ 
    id statusBarWindow = [[UIApplication sharedApplication] valueForKey:@"statusBarWindow"]; 
    id statusBar = [statusBarWindow valueForKey:@"statusBar"]; 

    SEL setForegroundColor_sel = NSSelectorFromString(@"setForegroundColor:"); 
    if([statusBar respondsToSelector:setForegroundColor_sel]) { 
     // iOS 7+ 
     [statusBar performSelector:setForegroundColor_sel withObject:color]; 
     return YES; 
    } else { 
     return NO; 
    } 
} 
中的iOS5和iOS6的

有可能太多,但我還沒有嘗試過,因爲它更工作。不過,我發現了一種感興趣的方法(可在iOS 5和iOS 6中使用)。類UIStatusBarItemView有一個名爲-textColorForStyle:(它接受一個整數並返回一個對象)的實例方法。你可以用猴子補丁來恢復你喜歡的任何顏色。不過,我不知道它是否會起作用。您可能需要枚舉所有狀態欄項目,並手動呼叫-setNeedsDisplay每個,以便有顏色變化立即可見,但誰知道...

注:我只是published the code在我的github頁太。

+0

好的,這就是我稱之爲真棒的答案!但是,我需要我的應用程序發佈,交叉手指:)順便說一句,我可以問你,你是怎麼發現, ID statusBarWindow = [[UIApplication sharedApplication] valueForKey:@「statusBarWindow」]; id statusBar = [statusBarWindow valueForKey:@「statusBar」]; 會返回正確的對象嗎? – user1147981

+0

1:曾幾何時,我在網上找到一個名爲「Runtime Browser」的應用程序。 (它不是[這一個](https://github.com/nst/RuntimeBrowser),但它可能工作得很好,但我還沒有嘗試過。)我製作了ARC-ready,添加了向我顯示方法的功能簽名,閱讀文檔以瞭解運行時系統,所以現在我知道'@ 12 @ 0:4i8'具有「採用整數並返回對象的方法」的含義,改進的性能等等。系統中存在的所有類以及所有方法名稱和每種方法的方法簽名。 – Michael

+0

2 .:我廣泛使用調試器,將斷點設置爲包含臨時變量的「調試方法」,或做一些實驗性的工作,然後我遍歷我的方法並檢查對象,它們的類名等。 ,我在iOS 5,6和7中測試它,看看它在哪裏工作以及它在哪裏崩潰。你真的需要足夠的測試設備,而且你總是應該在設備上工作,而不是在模擬器上工作。偶爾我會在模擬器中測試一些東西,以確保它不會在那裏崩潰。 – Michael

3

您不能將其更改爲橙色。

黑色白色是目前唯一可用的狀態欄內容/ texr顏色。

Apple UI準則提到不要創建自定義狀態欄

狀態欄中內容/文本的默認顏色爲黑色,如果狀態欄後面的內容很暗,可能會導致狀態欄變得不可讀。

爲了解決此問題,您可以設置應用程序和/或視圖的UIStatusBarStyleUIStatusBarStyleLightContent將狀態欄中內容的顏色更改爲白色;或者,UIStatusBarStyleDefault將狀態欄內容的顏色設置爲黑色。

enter image description here

+0

我會將你的答案標記爲答案,因爲這個問題現在已經是一團糟了。但是謝謝你!你是對的,黑色和白色是唯一可用的顏色atm。 – user1147981

+0

@ user1147981:看看我的新答案...橙色也是可能的 – Michael

-1

與下面的代碼嘗試在AppDelegate.m

self.window.backgroundColor = [UIColor colorWithRed:0.89f green:0.11f blue:0.17f alpha:1]; // set color as you want 
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent]; 

didFinishLaunchingWithOptions方法,如果你談論的是狀態欄文本顏色,然後有這麼多的問題都可以在這個網站:

Status Bar Text Color iOS 7
How to change Status Bar text color in iOS 7
Change status bar text colour from white iOS 7/Xcode 5

+0

我說的是文字顏色,而不是狀態欄的背景顏色:) – user1147981