我有一个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. 如何在Android上动态更改按钮和文本颜色
- 6. 更改WinForm按钮文本颜色?
- 7. 更改UIActivityViewController UINavigationBar的颜色
- 8. 如何更改UINavigationBar的颜色?
- 9. 使用选项更改按钮的文本颜色
- 10. 如何更改UISearchBar的取消按钮的文本颜色?
- 11. 如何更改UIActionsheet按钮的颜色?
- 12. 如何更改按钮的颜色
- 13. 更改颜色的按钮
- 14. 如何在输入文本框时更改按钮的颜色
- 15. 如何使用java中的按钮更改文本颜色
- 16. 更改禁用按钮上的文本颜色(自定义ButtonRenderer)
- 17. 如何更改颜色点击按钮?
- 18. 如何更改按钮颜色?
- 19. 如何更改WinForms按钮颜色?
- 20. 如何更改按钮颜色
- 21. CKEditor文本颜色按钮不改变文本颜色
- 22. 更改按钮颜色onClick
- 23. 如何在更改tintColor时调整UINavigationBar的文本和按钮?
- 24. 如何在android中按下按钮/文本视图时更改文本颜色
- 25. 列表视图上的按钮进行更改项目文本颜色单击
- 26. QML按钮更改文字颜色
- 27. 如何更改uinavigationbar后退按钮文本
- 28. 如何更改后退按钮从文本到图像在UINavigationBar
- 29. 如何在按下按钮时更改文字颜色?
- 30. 如何更改Android上的切换按钮的背景颜色
您可以。但我正在做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