繁体   English   中英

iOS 7-导航栏项目文本颜色

[英]iOS 7 - navigation bar item text color

我在iOS7上的导航栏项的文本颜色有问题。

一切都很好,直到我展示了一个视图控制器为止,从这个时候开始,所有导航栏项的文本颜色均为灰色。 您对此问题有经验吗?

用于呈现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]];

在passcodePopover的viewdidLoad方法中,您将要使用此代码。

self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, nil];
[self.navigationController.navigationBar setTitleTextAttributes:textTitleOptions];

如果弹出窗口中没有NavigationController,则必须稍作更改代码,也可能不想使用[UIColor whiteColor]。 而是替换您自己选择的颜色。

在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 
    }

而是创建一个类别:

@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];
}

其中kAppFontBoldkAppFontBoldSize是宏。

您可以使用它。 它可能会帮助您。在这里,我为两种状态设置了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];

注意: setTitleTextAttributes:方法仅适用于ios5.0 +。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM