博客> 使用系统工具栏完成有“+”的tabbar
使用系统工具栏完成有“+”的tabbar
2017-09-23 20:06 评论:0 阅读:197 Nathanile
ios tabbar 工具栏

近段时间需要做一个播放音乐的项目,里面的工具栏,中间的按钮实现功能是来发布动态,而该按钮展示效果 首页.jpg 在之前的功能实现中都是通过自定义几个按钮,通过代理或者block来实现视图控制器的切换功能,现在来展示一下我使用系统的tabbar完成的效果展示 Simulator Screen Shot 2016年12月8日 10.10.55.png 完美的展示,让我有了继续完善的动力,然后就是实现点击➕的时候,展示一个视图,并覆盖在当前展示的视图控制器上面,实现的效果 Simulator Screen Shot 2016年12月8日 10.12.52.png 现在就基本实现了这一效果的实现: 代码如下:tabbar上面的展示只是需要UI切出一个大点的➕图片,效果上就能展示出来,

  • (void)readlyUI { UINavigationController *firstNav = [self setUpOneChildViewController:[MainViewController new] withTitle:@"首页" withImage:@"首页-未选中" withSelectImage:@"首页-选中"];

    UINavigationController *secondNav = [self setUpOneChildViewController:[MessageViewController new] withTitle:@"消息" withImage:@"消息-未选中" withSelectImage:@"消息选中"];

    UINavigationController *thridNav = [self setUpOneChildViewController:[AddViewController new] withTitle:@" " withImage:@"+" withSelectImage:@"+"];

    UINavigationController *forthNav = [self setUpOneChildViewController:[ActorViewController new] withTitle:@"演艺圈" withImage:@"演艺圈-未选中" withSelectImage:@"演艺圈选中"];

    UINavigationController *fivthNav = [self setUpOneChildViewController:[PersonViewController new] withTitle:@"我的" withImage:@"我的" withSelectImage:@"我的选中"];

    self.viewControllers = @[firstNav, secondNav, thridNav, forthNav, fivthNav];

    //设置TabBar的背景颜色; UIImageView *backView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, K_SCREEN_WIDTH, 49)]; backView.image = K_SETIMAGE(@"白色导航背景"); backView.backgroundColor = [UIColor whiteColor]; // backView.alpha = 1; // backView.layer.borderColor = [[UIColor whiteColor] CGColor]; // backView.layer.borderWidth = K_iPhone_6(1); [self.tabBar insertSubview:backView atIndex:0]; self.tabBar.opaque = YES; }

  • (UINavigationController )setUpOneChildViewController:(UIViewController )viewController withTitle:(NSString )title withImage:(NSString )imageName withSelectImage:(NSString )image { UINavigationController nav = [[UINavigationController alloc] initWithRootViewController:viewController];

/为了适应新的tabbar系统颜色的蓝色,不得不设置一下自定义添加的图片展示模式,有兴趣的同事可以尝试一下剩余的两种模式;还有使用字典属性来设置title的字体和颜色/ UIImage homenormalImage = [K_SETIMAGE(imageName) imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; UIImage homeselectImage = [K_SETIMAGE(image) imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

UITabBarItem *item = [[UITabBarItem alloc]initWithTitle:title image:homenormalImage selectedImage:homeselectImage];

[item setTitleTextAttributes:@{NSForegroundColorAttributeName:KUIColorFromRGB(K_TITLE_COLOR)} forState:UIControlStateNormal];

[item setTitleTextAttributes:@{NSForegroundColorAttributeName:KUIColorFromRGB(K_TITLE_COLOR)} forState:UIControlStateSelected];

nav.tabBarItem = item;

return nav;

}

绑定的➕的页面是一个视图控制器,我们需要将当前视图展示在➕视图控制器视图的背景上,这就要取其他四个的view,我是使用了单例来指向并切换每个视图控制器的,将其加载在➕视图控制器上面:

//其他四个视图

  • (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated];

    [WWTPCHFile manager].selectorViewController = self; [WWTPCHFile manager].tabbarIndex = 0; }

//➕视图

  • (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated];

    UIView *view = [WWTPCHFile manager].selectorViewController.view; view.frame = CGRectMake(0, 0, K_SCREEN_WIDTH, K_SCREEN_HEIGHT); [self.view addSubview:view];

}

如此,希望能帮到需要的同事,用于简化自己的逻辑和代码。

收藏
1
sina weixin mail 回到顶部