带有中心按钮的TabBar

时间:2017-05-24 03:07:28

标签: objective-c uitabbarcontroller

enter image description here

嗨,我想用中心按钮制作一个tabBar。正如我们从图像中看到的,当我单击标签栏时,它将显示一个选择按钮的视图。当我单击“注释”按钮时,视图将消失,我的应用程序将跳转到对应的viewcontroller和tabbar.selectIndex = 2.我已经创建了UITabBarController的子类,并向视图添加了一个按钮,代码就像这个[self.view addSubview:middleButton]。 现在的问题是,当我按下viewcontroll时,当中心按钮仍然在页面上时,tabbar消失。当我回到主视图控制器时,标签栏将与中心按钮重叠。我不想制作一个完整的自定义UITabBarViewController,请告诉我如何在按下viewcontroll时隐藏中心按钮以及如何显示当我回到主视图控制器时,它在tapbar上。

嗨,Hament,我没有使用方法“ - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item”。我的代码如下:

@implementation MyTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setupViews];
    [self setupTabBarItems];
    [self setupMiddleButton];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)setupViews
{
    mask = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([MyMiddleButtonMask class]) owner:self options:nil].firstObject;
    mask.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    mask.delegate = self;
}
-(void)setupTabBarItems
{
    UIViewController *vc1 = [[UIViewController alloc] init];
    vc1Nav = [[UINavigationController alloc] initWithRootViewController:vc1];
    
    UIViewController *vc2 = [[UIViewController alloc] init];
    vc2Nav = [[UINavigationController alloc] initWithRootViewController:vc2];   
    
    UIViewController *vc3 = [[UIViewController alloc] init];
    vc3Nav = [[UINavigationController alloc] initWithRootViewController:vc3];    
    
    UIViewController *vc6 = [[UIViewController alloc] init];
    vc6Nav = [[UINavigationController alloc] initWithRootViewController:vc6];    
    
    UIViewController *vc7 = [[UIViewController alloc] init];
    vc7Nav = [[UINavigationController alloc] initWithRootViewController:vc7];     
    
    self.viewControllers = @[vc1Nav, vc2Nav, vc3Nav, vc6Nav, vc7Nav];
}
-(void)setupMiddleButton
{
    middleButton = [[UIButton alloc] initWithFrame:CGRectMake(0, -16, 64, 64)];
    CGRect f = middleButton.frame;
    f.origin.y = SCREEN_HEIGHT - f.size.height;
    f.origin.x = (SCREEN_WIDTH - f.size.width)/2;
    middleButton.frame = f;
    [middleButton setImage:[UIImage imageNamed:@"plus"] forState:UIControlStateNormal];
    
    middleButton.backgroundColor = [UIColor redColor];
    middleButton.layer.cornerRadius = middleButton.frame.size.height/2;
    [self.view addSubview:middleButton];
    
    [middleButton addTarget:self action:@selector(didClickedMiddleButton:) forControlEvents:UIControlEventTouchUpInside];
}
-(void)didClickedMiddleButton:(id)sender
{
    [[UIApplication sharedApplication].keyWindow.rootViewController.view addSubview:mask];
}

#pragma mark - KGOMiddleButtonMaskDelegate, Button1,2,3 are on the mask page.
-(void)didClickedButton1:(KGOMiddleButtonMask *)maskView
{
    self.viewControllers = @[vc1Nav, vc2Nav, vc3Nav, vc6Nav, vc7Nav];
    self.selectedIndex = 2;
    [maskView removeFromSuperview];
}
-(void)didClickedButton2:(KGOMiddleButtonMask *)maskView
{
    self.viewControllers = @[vc1Nav, vc2Nav, vc4Nav, vc6Nav, vc7Nav];
    self.selectedIndex = 2;
    [maskView removeFromSuperview];
}
-(void)didClickedButton3:(KGOMiddleButtonMask *)maskView
{
    self.viewControllers = @[vc1Nav, vc2Nav, vc5Nav, vc6Nav, vc7Nav];
    self.selectedIndex = 2;
    [maskView removeFromSuperview];
}
-(void)didClickedSelf:(KGOMiddleButtonMask *)maskView
{
    [maskView removeFromSuperview];
}
-(void)didClickedCloseButton:(KGOMiddleButtonMask *)maskView
{
    [maskView removeFromSuperview];
}

0 个答案:

没有答案