RTRootNavigationController的使用

RTRootNavigationController是iOS开发里面经常用到的第三方框架,可以用cocoapods导入项目中,使用TRootNavigationController可以自定义导航栏

参考:http://www.cocoachina.com/ios/20161121/18137.html

  • TRootNavigationController的使用
    TRootNavigationController可以达到这个效果:页面手势返回时 导航条跟随控制器一起滑动


    RTRootNavigationController的使用_第1张图片
    B8CA0FAFD597D39B281725D10D42F92E.jpg

1.在AppDelegate里面设置根视图

AppDelegate.m
 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setBackgroundColor:[UIColor whiteColor]];
self.window.rootViewController = [[RTRootNavigationController alloc] initWithRootViewController:[[CFFRootViewController alloc] init]];
    [self.window makeKeyAndVisible];

2.在base类导入一下TRootNavigationController.h头文件就行,也可以把TRootNavigationController.h放到pch文件里面,base类,每个vc都需要继承它
base.h

#import 
//导入一下
#import 
@interface CFFBaseViewController : UIViewController
@end

base.m
//重写RTRootNavigationController里方法,修改返回按钮;在其他控制器想设置导航栏不一样,可以在其他控制器重写该方法修改当前控制器的导航栏

- (UIBarButtonItem *)rt_customBackItemWithTarget:(id)target action:(SEL)action {
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setImage:[UIImage imageNamed:@"left"] forState:UIControlStateNormal];
    [btn sizeToFit];
    [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    return [[UIBarButtonItem alloc] initWithCustomView:btn];
}

3.如果有底部栏,在root根视图里面

 //RTContainerNavigationController是RTRootNavigationController导航栏的类
    UIViewController *vc1 = [CFFMainViewController new];
    RTContainerNavigationController *nc1 = [[RTContainerNavigationController alloc] initWithRootViewController:vc1];
    vc1.tabBarItem.title = @"首页";
    
    UIViewController *vc2 = [CFFDynamicViewController new];
    RTContainerNavigationController *nc2 = [[RTContainerNavigationController alloc] initWithRootViewController:vc2];
    vc2.tabBarItem.title = @"动态";
    
    UIViewController *vc3 = [CFFMeViewController new];
    RTContainerNavigationController *nc3 = [[RTContainerNavigationController alloc] initWithRootViewController:vc3];
    nc2.rdv_tabBarItem.title = @"我的";
    
    UIViewController *centerVC = [[ViewController alloc] init];
    RTContainerNavigationController *ncCenter = [[RTContainerNavigationController alloc] initWithRootViewController:centerVC];   
    self.viewControllers = @[nc1,nc2,ncCenter,nc3];

4.视图跳转

CFFPlayViewController *playVC = [[CFFPlayViewController alloc] init];
        //导入RTRootNavigationController,依然可以用自带的导航栏跳转
        [self.navigationController pushViewController:playVC animated:YES];
        //使用RTRootNavgationController的跳转方式
//        [self.rt_navigationController pushViewController:playVC animated:YES complete:nil];
  • 导航栏属性修改
    //修改导航栏颜色 可以设置barTintColor
    tintColor:item字体颜色(修改所有界面的导航栏按钮,如果使用了RTRootNavigatonController,则设置该属性,只改变当前导航栏按钮) barTintColor:导航栏背景颜色(修改所有界面的导航栏,如果使用了RTRootNavigatonController,则设置该属性,只改变当前导航栏)
    self.navigationController.navigationBar.barTintColor = [UIColor groupTableViewBackgroundColor];

修改导航栏颜色 也可以导航栏背景图片

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor grayColor]] forBarMetrics:UIBarMetricsDefault];  //导航栏背景图片

//隐藏导航栏分割线
[self.navigationController.navigationBar setClipsToBounds:YES];

//修改导航栏分割线 设置阴影分割线,和背景图片一起设置才有效果
如果想隐藏分割线,也可以阴影分割线,和背景图片设置一样的颜色

    [self.navigationController.navigationBar setShadowImage:[UIImage imageWithColor:[UIColor redColor]]];  //导航栏分割线
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor grayColor]] forBarMetrics:UIBarMetricsDefault];  //导航栏背景图片

你可能感兴趣的:(RTRootNavigationController的使用)