微博(二)自定义导航栏UINavigationController

自定义导航栏,方便push(到一个新的页面的时候隐藏底栏)

  • 创建一个继承自UINavigationController的控制器
  • 重写-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 这个方法

具体代码如下

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ if (self.viewControllers.count > 0) { viewController.hidesBottomBarWhenPushed = YES; } [super pushViewController:viewController animated:animated]; }

自定义导航栏的主题,样式,文字样式,同样是在UINavigationController控制器里面

代码如下


/**

  • 加号方法 必须用加号+(void)settingThem
    */

+(void)initialize{

[self settingTheme];


[self settingBarButtonItemTheme];

}
//设置导航栏的主题

+(void)settingTheme{
/**
 *  第一次使用这个类的时候会调用(只会调用一次)
 */
 //    1.取出appearance对象
UINavigationBar *navBar = [UINavigationBar appearance];

 //   2.设置背景 ios6
//    [navBar setBackgroundImage:[UIImage imageNamed:@"navigationbar_background"] forBarMetrics:UIBarMetricsDefault];
//    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];

/**这ios7以后新的设置方法
 *  UIKIT_EXTERN NSString *const UITextAttributeFont NS_DEPRECATED_IOS(5_0, 7_0, "Use NSFontAttributeName") __TVOS_PROHIBITED;
 // Key to the text color in the text attributes dictionary. A UIColor instance is expected.
 UIKIT_EXTERN NSString *const UITextAttributeTextColor NS_DEPRECATED_IOS(5_0, 7_0, "Use NSForegroundColorAttributeName") __TVOS_PROHIBITED;
 // Key to the text shadow color in the text attributes dictionary.  A UIColor instance is expected.
 UIKIT_EXTERN NSString *const UITextAttributeTextShadowColor NS_DEPRECATED_IOS(5_0, 7_0, "Use NSShadowAttributeName with an NSShadow instance as the value") __TVOS_PROHIBITED;
 // Key to the offset used for the text shadow in the text attributes dictionary. An NSValue instance wrapping a UIOffset struct is expected.
 UIKIT_EXTERN NSString *const UITextAttributeTextShadowOffset NS_DEPRECATED_IOS(5_0, 7_0, "Use NSShadowAttributeName with an NSShadow instance as the value") __TVOS_PROHIBITED;
 */
//设置颜色
textAttrs[NSForegroundColorAttributeName] = [UIColor blackColor];
//    设置阴影
textAttrs[NSShadowAttributeName] = nil;
textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:20];

[navBar setTitleTextAttributes:textAttrs];

}

/**

  • 设置导航栏按钮主题
    */
  • (void)settingBarButtonItemTheme
    {
    UIBarButtonItem *item = [UIBarButtonItem appearance];

    // 设置背景
    if (!iOS7) {
    [item setBackgroundImage:[UIImage imageWithName:@"navigationbar_button_background"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [item setBackgroundImage:[UIImage imageWithName:@"navigationbar_button_background_pushed"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
    [item setBackgroundImage:[UIImage imageWithName:@"navigationbar_button_background_disable"] forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault];
    }

    // 设置文字属性
    //这是旧的设置方法
    NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
    textAttrs[UITextAttributeTextColor] = iOS7 ? [UIColor orangeColor] : [UIColor grayColor];
    textAttrs[UITextAttributeTextShadowOffset] = [NSValue valueWithUIOffset:UIOffsetZero];
    textAttrs[UITextAttributeFont] = [UIFont systemFontOfSize:iOS7 ? 14 : 12];
    [item setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
    [item setTitleTextAttributes:textAttrs forState:UIControlStateHighlighted];
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容