FJController 0.1

FJController 0.1

测试已测试
语言编程语言 Obj-CObjective C
许可证 MIT
发布最新发布2017年8月

jeff_njut 维护。



  • 作者:
  • jeff_njut

如何开始

FJController 基于 TabBarController、NavigationController 和 ViewController,方便配置样式。

Podfile

要使用 CocoaPods 将 FJController 集成到 Xcode 项目中,请在您的 Podfile 中指定它

pod 'FJController', :git => 'https://github.com/jeffnjut/FJController.git'

然后,运行以下命令:

$ pod install

如果有任何更新发生,请运行以下命令:

$ pod update

导入

导入 FJController 头文件

#import <FJController/FJControllerHeader.h>

使用方法

TabBar 样式设置

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    ... ...

    FJTabItem *firstTabItem = [FJTabItem tabItem:@"First"
                                 unselectedImage:@"first_unselected"
                                   selectedImage:@"first_selected"
                             unselectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor lightGrayColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                               selectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor blackColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                                      controller:[FirstViewController class]];

    FJTabItem *secondTabItem = [FJTabItem tabItem:@"Second"
                                  unselectedImage:@"second_unselected"
                                    selectedImage:@"second_selected"
                              unselectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor lightGrayColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                                selectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor blackColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                                       controller:[SecondViewController class]];

    FJTabItem *thirdTabItem = [FJTabItem tabItem:@"Third"
                                 unselectedImage:@"third_unselected"
                                   selectedImage:@"third_selected"
                             unselectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor lightGrayColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                               selectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor blackColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                                      controller:[ThirdViewController class]];

    FJTabItem *fourthTabItem = [FJTabItem tabItem:@"Fourth"
                                  unselectedImage:@"fourth_unselected"
                                    selectedImage:@"fourth_selected"
                              unselectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor lightGrayColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                                selectedTextAttrs:@{NSForegroundColorAttributeName:[UIColor blackColor], NSFontAttributeName:[UIFont systemFontOfSize:10]}
                                       controller:[FourthViewController class]];

    [[FJControllerMgr sharedInstance] setTabItems:@[firstTabItem,secondTabItem,thirdTabItem,fourthTabItem]];

    // 设置标签栏Bar的属性(tabbar_bg是背景图,优先级大于barTintColor)
    FJTabBarConfig *tabBarConfig = [FJTabBarConfig tabBarConfig:@"tabbar_bg"
                                                    disableLine:NO
                                                    translucent:NO
                                                    barTintColor:[UIColor whiteColor]
                                                    selectedColor:nil
                                                    unselectedColor:nil];

    [[FJControllerMgr sharedInstance] setTabBarConfig:tabBarConfig];

    ... ... // 其它设置

    // 初始化FJTabViewController
    FJTabViewController *tabViewController = [[FJTabViewController alloc] init];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    [self.window setRootViewController:tabViewController];

    ... ...

    return YES;
}

Nav 样式设置

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    ... ...

    // 设置导航栏Bar的属性
    FJNavBarConfig *navBarConfig = [FJNavBarConfig navBarConfig:@"nav_back_black"
                                                  imageBackSize:CGSizeMake(24.0, 24.0)
                                              navbarTranslucent:NO
                                                navbarTintColor:[UIColor whiteColor]
                                                     titleColor:[UIColor blackColor]
                                                      titleFont:[UIFont systemFontOfSize:18]];
    [[FJControllerMgr sharedInstance] setNavBarConfig:navBarConfig];

    ... ...

}
在 Controller 初始化设置
- (instancetype)init
{
    FJControllerItem *item = [FJControllerItem controllerItem:@"图片"];
    self = [super initWithControllerItem:item];
    if (self) {

    }
    return self;
}

Controller 通用样式设置

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    ... ...

    FJCommonControllerConfig *commonControllerConfig = [[FJCommonControllerConfig alloc] init];
    commonControllerConfig.backgroundColor = [UIColor whiteColor];
    [[FJControllerMgr sharedInstance] setCommonControllerConfig:commonControllerConfig];

    [commonControllerConfig setCommonInitialBlock:^{
        NSLog(@"通用Initial Block");
    }];
    [commonControllerConfig setCommonDeallocBlock:^{
        NSLog(@"通用Dealloc Block");
    }];
    [commonControllerConfig setCommonMemorywarningBlock:^{
        NSLog(@"通用Memory Warning Block");
    }];
    [commonControllerConfig setCommonViewWillAppearBlock:^{
        NSLog(@"通用View Will Appear Block");
    }];
    [commonControllerConfig setCommonViewDidAppearBlock:^{
        NSLog(@"通用View Did Appear Block");
    }];
    [commonControllerConfig setCommonViewWillDisappearBlock:^{
        NSLog(@"通用View Will Disappear Block");
    }];
    [commonControllerConfig setCommonViewDidDisappearBlock:^{
        NSLog(@"通用View Did Disappear Block");
    }];

    ... ...

}

高级 Controller 样式设置

- (instancetype)init
{

    CustomNavView *customNavView = [[[NSBundle mainBundle] loadNibNamed:@"CustomNavView" owner:nil options:nil] lastObject];
    __weak typeof(customNavView) weakCustomNavView = customNavView;
    [customNavView bk_whenTapped:^{
        NSInteger badge = [weakCustomNavView.lb_badge.text integerValue];
        weakCustomNavView.lb_badge.text = [NSString stringWithFormat:@"%d", (int)badge+1];
    }];

    FJControllerItem *item = [FJControllerItem controllerItem:nil
                                                        title:@"Detail"
                                              navbarTintColor:[UIColor whiteColor]
                                             disableStatusBar:NO
                                                disableNavBar:NO
                                       edgesForExtendedLayout:UIRectEdgeAll
                                     leftNavBarButtonResource:@"TEXT:返回"
                                         leftNavBarButtonSize:CGSizeZero
                                         leftNavBarCustomView:nil
                                    rightNavBarButtonResource:nil
                                        rightNavBarButtonSize:CGSizeZero
                                        rightNavBarCustomView:customNavView
                          rightSupplementNavBarButtonResource:@"nav_camera_black"
                              rightSupplementNavBarButtonSize:CGSizeZero
                              rightSupplementNavBarCustomView:nil
                                        navBarTextButtonColor:nil
                                         navBarTextButtonFont:nil];


    __weak typeof(self) weakSelf = self;

    // 按钮事件
    [item setLeftNavBarButtonBlock:^{
        [weakSelf.navigationController popViewControllerAnimated:YES];
    }];

    [item setRightNavBarButtonBlock:^{
        NSLog(@"自定义Text按钮");
        DetailViewController *detailVC = [[DetailViewController alloc] init];
        [weakSelf.navigationController pushViewController:detailVC animated:YES];
    }];

    [item setRightSupplementNavBarButtonBlock:^{
        NSLog(@"自定义图片按钮");
    }];

    // 系统事件
    [item setInitialBlock:^{
        NSLog(@"DetailVC的Initial Block");
    }];
    [item setDeallocBlock:^{
        NSLog(@"DetailVC的Dealloc Block");
    }];
    [item setMemorywarningBlock:^{
        NSLog(@"DetailVC的Memory Warning Block");
    }];
    [item setViewWillAppearBlock:^{
        NSLog(@"DetailVC的View Will Appear Block");
    }];
    [item setViewDidAppearBlock:^{
        NSLog(@"DetailVC的View Did Appear Block");
    }];
    [item setViewWillDisappearBlock:^{
        NSLog(@"DetailVC的View Will Disappear Block");
    }];
    [item setViewDidDisappearBlock:^{
        NSLog(@"DetailVC的View Did Disappear Block");
    }];

    self = [super initWithControllerItem:item];
    if (self) {

    }
    return self;
}

自定义启动画面设置

    
    // Splash View
    DemoStayView *demoStayView = [[[NSBundle mainBundle] loadNibNamed:@"DemoStayView" owner:nil options:nil] lastObject];
    [[FJControllerMgr sharedInstance] setStayView:demoStayView];

注意

图片应以原始模式渲染

贡献

如果您需要帮助或发现错误,请随时提交问题或拉取请求。

联系

  • Jeff NJUT 提供支持
  • 如果有任何错误或问题,请通过电子邮件联系我 Jeff NJUT

待办事项

  • 文档

许可证

FJController 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。

The MIT License (MIT)

版权所有 © 2017 Jeff

特此许可,免费提供给任何获得本软件及其相关文档文件(“软件”)副本的个人,不限使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许提供软件的个人同样操作,但需遵守以下条件:

本版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件按“现状”提供,不提供任何形式的保修,无论是明示的还是暗示的,包括但不限于适用于商销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任承担责任,无论源于、起因于或与软件或其使用或其他方式有关,无论涉及合同、侵权或其他行为。