FJController 基于 TabBarController、NavigationController 和 ViewController,方便配置样式。
要使用 CocoaPods 将 FJController 集成到 Xcode 项目中,请在您的 Podfile
中指定它
pod 'FJController', :git => 'https://github.com/jeffnjut/FJController.git'
然后,运行以下命令:
$ pod install
如果有任何更新发生,请运行以下命令:
$ pod update
导入 FJController 头文件
#import <FJController/FJControllerHeader.h>
- (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;
}
- (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];
... ...
}
- (instancetype)init
{
FJControllerItem *item = [FJControllerItem controllerItem:@"图片"];
self = [super initWithControllerItem:item];
if (self) {
}
return self;
}
- (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");
}];
... ...
}
- (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];
图片应以原始模式渲染
如果您需要帮助或发现错误,请随时提交问题或拉取请求。
FJController 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。
The MIT License (MIT)
版权所有 © 2017 Jeff
特此许可,免费提供给任何获得本软件及其相关文档文件(“软件”)副本的个人,不限使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许提供软件的个人同样操作,但需遵守以下条件:
本版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“现状”提供,不提供任何形式的保修,无论是明示的还是暗示的,包括但不限于适用于商销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任承担责任,无论源于、起因于或与软件或其使用或其他方式有关,无论涉及合同、侵权或其他行为。