IOS开发过程中,布局tabbar是经常用到的功能,如果才能满足我们的需求,显示符合需求的按钮,就将是我们接下来要讨论的重点:
1. 在tabbar中间添加一个按钮,该按钮的功能是为了弹出另外有一个界面,有三种方法可以解决下面的问题,
第一: 通过KVC的赋值,自定义tabbar,重写layoutSubViews 方法,取代系统原有的tabor.
第二: 自定义一个view,添加到tabbar上,通过控件间的传值,实现功能
第三:添加5个控制器,将中间的控制器的titile和 image 分别设置为nil,然后自定义一个button,将button添加到tabbar的第三个barbuttonitem的位置上
前两个比较简单,重点说下第三个, 这种方法操作时会有很多注意点:
1)如何才能正确的添加到第三个位置,参考下列代码
2)如何才能保证添加的按钮显示的顶层,而不被第三个barbuttonitem覆盖,因为在添加子控制器的过程中,系统会自动的将控制器产生的barButtonItem显示在最顶层
两种方式: 第一:在viewDidload中分别添加自控制器,然后在viewWillAppear中添加button 第二:利用tabbarController的view controllers的属性,整体创建一个控制器数组赋值,然后在添加button,第三: 利用GCD 异步+主线程 将add方法放到 主线程中,
dispatch_async(dispatch_get_main_queue(), ^{
[self addComposeButton];
});
或者如下代码:
2. 如何防止图片渲染
resultImage = [resultImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
3. 解决push后的隐藏tabbar的问题
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (self.childViewControllers.count == 1) {
viewController.hidesBottomBarWhenPushed = YES;
};
viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"" style:UIBarButtonItemStyleDone target:viewController action:@selector(popViewControllerAnimated:)];
[super pushViewController:viewController animated:animated];
}