[英]iOS 7 - navigation bar item text color
I'm having an issue with text color of navigation bar item on iOS7. 我在iOS7上的导航栏项的文本颜色有问题。
All things are fine until I present a viewcontroller, from this time, all navigation bar items text color are Grey. 一切都很好,直到我展示了一个视图控制器为止,从这个时候开始,所有导航栏项的文本颜色均为灰色。 Do you have any experience with this issue? 您对此问题有经验吗?
The codes used to present VC: 用于呈现VC的代码:
[passcodePopover presentPopoverFromRect:CGRectMake([UIScreen mainScreen].bounds.size.width/2 ,currentWindow.frame.size.height/2,1,1)
inView:currentWindow
permittedArrowDirections:0 animated:NO];[passcodePopover presentPopoverFromRect:CGRectMake([UIScreen mainScreen].bounds.size.width/2 ,currentWindow.frame.size.height/2,1,1)
inView:currentWindow
permittedArrowDirections:0 animated:NO];
//call the below code in ViewDidLoad /It works fine in iOS7
UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0, 320, 100)];
navLabel.backgroundColor = [UIColor clearColor];
navLabel.text = @"Event Details";
navLabel.textColor = [UIColor whiteColor];
navLabel.shadowOffset = CGSizeMake(0, -2);
[navLabel setFont:[UIFont boldSystemFontOfSize:16]];
navLabel.textAlignment = NSTextAlignmentCenter;
self.navigationItem.titleView = navLabel;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero] ;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0]; // font size
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor yellowColor]; // change this color
self.navigationItem.titleView = label;
label.text = NSLocalizedString(@"Product Info.", @""); // lable name
[label sizeToFit];
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
NSForegroundColorAttributeName,[UIColor whiteColor],
NSForegroundColorAttributeName,[NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
NSForegroundColorAttributeName,[UIFont fontWithName:@"Arial-Bold" size:0.0],
NSFontAttributeName,nil]];
In the passcodePopover's viewdidLoad method you will want to use this code. 在passcodePopover的viewdidLoad方法中,您将要使用此代码。
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, nil];
[self.navigationController.navigationBar setTitleTextAttributes:textTitleOptions];
If you don't have a navigationController in your popover you will have to change the code slightly, also you may not want to use [UIColor whiteColor]. 如果弹出窗口中没有NavigationController,则必须稍作更改代码,也可能不想使用[UIColor whiteColor]。 Instead substitute your own choice of color. 而是替换您自己选择的颜色。
use below code in viewdid Load function 在viewdid加载函数中使用以下代码
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
// Load resources for iOS 6.1 or earlier
[[UINavigationBar appearance]setTintColor:NavigationColor];
} else
{
[[UINavigationBar appearance]setTintColor:[UIColor whiteColor]]; // it set color of bar button item text
}
create a category instead: 而是创建一个类别:
@implementation UINavigationBar (custom)
- (void)setCustomNavigationBar: (NSString *)_strTitle
{
[self setBackgroundImage:[UIImage imageNamed:@"navigationbar"] forBarMetrics:UIBarMetricsDefault];
UILabel *_lblTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];
_lblTitle.text = _strTitle;
_lblTitle.textAlignment = NSTextAlignmentCenter;
[_lblTitle setBackgroundColor:[UIColor clearColor]];
[_lblTitle setFont:[UIFont fontWithName:kAppFontBold size:kAppFontBoldSize]];
[_lblTitle setTextColor:[UIColor navigationBarColor]];
[[self topItem] setTitleView:_lblTitle];
}
Where kAppFontBold
and kAppFontBoldSize
are macros. 其中kAppFontBold
和kAppFontBoldSize
是宏。
You can use this. 您可以使用它。 It may help you.. Here I've set font and text color
for two states. 它可能会帮助您。在这里,我为两种状态设置了font and text color
。
[barItemForIndex setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont systemFontOfSize:Tabbar_Item_Font_Size], NSFontAttributeName,
[UIColor darkGrayColor], NSForegroundColorAttributeName,
nil] forState:UIControlStateNormal];
[barItemForIndex setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont systemFontOfSize:Tabbar_Item_Font_Size], NSFontAttributeName,
[UIColor whiteColor], NSForegroundColorAttributeName,
nil] forState:UIControlStateSelected];
Note : setTitleTextAttributes:
method only available ios5.0+. 注意: setTitleTextAttributes:
方法仅适用于ios5.0 +。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.