我有一個UINavigationController,並且使用Interface Builder中導航欄的Tint屬性將其更改爲白色。但按鈕和標題中的文本仍然是默認的顏色,白色,因此在白色背景下丟失。任何人都知道如何解決這個問題?如何更改UINavigationBar按鈕項上的文本顏色
回答
隨着iOS 5的這個更容易,使用的UIBarButtonItem外觀代理:
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor blackColor],
UITextAttributeTextColor,
[UIColor clearColor],
UITextAttributeTextShadowColor, nil];
[[UIBarButtonItem appearance] setTitleTextAttributes: attributes
forState: UIControlStateNormal];
將其設置在應用程序中:didFinishLaunchingWithOptions:
你不能迭代UINavigationBar視圖的內容來查找awakeFromNib中的按鈕嗎?
這裏有一種方法:
[[theNavigationBar.subviews objectAtIndex:1] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[[theNavigationBar.subviews objectAtIndex:2] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
然而,巨大的,需要注意的。這很可能會在未來的操作系統版本上崩潰,因此不推薦。
至少你應該進行大量的測試,並確保你對導航欄的子視圖佈局的假設是正確的。
我會發現,特別是脆弱的,因爲你正在通過索引訪問項目。更安全的是獲得所有的子視圖項目,比較你期望的類別,甚至使用職位。但這正是這個想法的核心。 :) – 2009-03-26 17:53:09
或者你用你自己的按鈕欄物品子類與你指定一個二傳手,邏輯單元不是iPhone OS 3假設揭露文字的顏色爲每個按鈕
我一樣drunknbass建議。我採取了在幾種狀態下爲後退按鈕製作一系列圖像,並在少數幾個州製作了常規按鈕,並將它們放入一個定製的UIButton子類中,以設置適當的樣式。
作爲一種解決方案,它不能很好地擴展,但我的需求很簡單。它具有不會打破內置控件中的子視圖訂單是否改變的優勢,這是該方法明顯的缺點。需要幾個圖像的缺點。另一個棘手的問題是處理方向更改,因爲按鈕應該更改大小。
在相關說明中,如果更改了導航欄的色調顏色,它將無法與特殊的「更多」視圖控制器一起使用,以定製選項卡欄的順序。似乎沒有任何「可接受」的方法來改變該視圖中工具欄的顏色。
這裏的清潔方式(依靠公共API)來做到這一點恕我直言:你應該使用navigationItem
的titleView
屬性以將它自己的UILabel
上,您將定製textColor
UILabel* lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
lbl.textAlignment=UITextAlignmentCenter;
lbl.backgroundColor=[UIColor clearColor];
lbl.textColor=[UIColor colorWithRed:0.18 green:0.2 blue:0.56 alpha:1];
theControllerOnWhichYouWantToHaveATitleWithYourOwnColor.navigationItem.titleView=lbl;
[lbl release];
for (id subView in theNavigationBar.subviews) {
if ([subView isKindOfClass:[UIButton class]]) {
[(UIButton *)subView setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[(UIButton *)subView setTitleShadowColor:[UIColor clearColor] forState:UIControlStateNormal];
}
}
您可以通過在導航欄中添加如下標籤來更改標題外觀。
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 35)];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = UITextAlignmentCenter;
label.textColor =[UIColor whiteColor];
label.text=self.title;
self.navigationItem.titleView = viewLabel;
[label release];
- 1. 如何更改UINavigationBar上按鈕發光的顏色?
- 2. UINavigationBar按鈕顏色
- 3. 更改UINavigationBar中的文本顏色
- 4. 如何更改UINavigationBar和按鈕的顏色?
- 5. 更改文字顏色UINavigationBar
- 6. 如何更改按鈕上的textView文本顏色點擊
- 7. 如何在Android上動態更改按鈕和文本顏色
- 8. 更改WinForm按鈕文本顏色?
- 9. 更改切換按鈕文本顏色
- 10. 單選按鈕更改文本顏色
- 11. 如何更改UINavigationBar的顏色?
- 12. 更改UINavigationBar的顏色
- 13. 更改UIActivityViewController UINavigationBar的顏色
- 14. UINavigationBar顏色的更改
- 15. 使用選項更改按鈕的文本顏色
- 16. 如何更改UISearchBar的取消按鈕的文本顏色?
- 17. 如何更改按鈕的tabcontrol顏色?
- 18. 如何更改gridView的按鈕顏色
- 19. 如何更改按鈕的顏色?
- 20. 如何更改按鈕的顏色
- 21. 如何更改UIActionsheet按鈕的顏色?
- 22. 更改顏色的按鈕
- 23. 如何使用java中的按鈕更改文本顏色
- 24. 如何更改MFMailComposeViewController文本和按鈕圖像的顏色?
- 25. 如何更改IE中禁用按鈕的文本顏色?
- 26. 如何更改UISearchbar取消按鈕的文本顏色
- 27. 如何更改按鈕的文本顏色?
- 28. Dart:如何更改按鈕文本的顏色
- 29. 如何在輸入文本框時更改按鈕的顏色
- 30. 將鼠標懸停在按鈕上的文本顏色更改
您可以。但我正在做setTextColor:forStates:在我的按鈕上,它似乎被忽略。但會堅持下去。 此外,它與私有api(或至少私人承擔的用戶界面結構的知識)的使用接近。 – schwa 2009-03-26 02:40:42
哦,我收回它 - 它確實有效。看到後續的答案... – schwa 2009-03-26 02:41:55
我偷看了這樣的其他意見。雖然這是一個私人的API-ish,但它至少不會做出任何假設:如果內部發生變化,您的代碼將無法檢測到您搜索的任何條件。但我還沒有完成UINavigationBar。 – 2009-03-26 02:42:47