纯代码创建中部凸起的Tabbar

这篇博客介绍了如何在Xcode 7中通过代码创建一个中部凸起的Tabbar,并详细讲解了设置过程,包括设置Tabbar不透明、添加子控制器、创建并布局突出按钮,以及处理按钮和Tabbar中心对齐的细节。最后提供了GitHub上的项目源码链接供读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 创建Tabbar为根视图控制器

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    GDMainTabbarViewController *mainTVC = [[GDMainTabbarViewController alloc] init];

    // 设置tabbar 透明

    mainTVC.tabBar.translucent = NO;

    self.window.rootViewController = mainTVC;

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

二. 创建一个属性按钮

//  这里是这页突出的按钮

@property(nonatomic,strong) UIButton *button;

三。设置创建系统的Tabbar

// 1.添加第一个控制器

    MainViewController *oneVC = [[MainViewController alloc]init];

    [self setUpOneChildViewController:oneVC image:[UIImage imageNamed:@"tab_home_icon"] title:@"首页"];

    //    oneVC.view.backgroundColor = [UIColor redColor];

    

    

    // 2.添加第2个控制器

    ContactsViewController *twoVC = [[ContactsViewController alloc]init];

    [self setUpOneChildViewController:twoVC image:[UIImage imageNamed:@"js"] title:@"通讯"];

    // 3.添加中心按钮

    CenterViewController *cenVC = [[CenterViewController alloc] init];

    [self setUpOneChildViewController:cenVC image:[UIImage imageNamed:@"main"] title:@"中心"];

    // 4.添加第3个控制器

    FindViewController *threeVC = [[FindViewController alloc]init];

    [self setUpOneChildViewController:threeVC image:[UIImage imageNamed:@"qw"] title:@"发现"];

    // 5.添加第4个控制器

    MineViewController *fourVC = [[MineViewController alloc]init];

    [self setUpOneChildViewController:fourVC image:[UIImage imageNamed:@"user"] title:@"我的"];

四。用自定义按钮替代中心的tabbar,并设置其中心位置与Tabbar相同

button = [UIButton buttonWithType:UIButtonTypeCustom];

    [button addTarget:self action:@selector(pressChange:) forControlEvents:UIControlEventTouchUpInside];

    // UIViewAutoresizingFlexibleRightMargin 自动调整view的宽度,保证左边距和右边距不变

    // UIViewAutoresizingFlexibleLeftMargin  不会随父视图的改变而改变

    // UIViewAutoresizingFlexibleBottomMargin自动调整view的高度,以保证上边距和下边距不变

    // UIViewAutoresizingFlexibleTopMargin   自动调整view与父视图右边距,以保证左边距不变

    

    

    button.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;

    

    //  设定button大小为适应图片

    button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);

    [button setImage:buttonImage forState:UIControlStateNormal];

    [button setImage:selectedImage forState:UIControlStateSelected];

    

    //  这个比较恶心  去掉选中button时候的阴影

    button.adjustsImageWhenHighlighted = NO;

    /*

     *  核心代码:设置buttoncenter tabBar center 做对齐操作, 同时做出相对的上浮

     */

    CGFloat heightDifference = buttonImage.size.height - self.tabBar.frame.size.height;

    if (heightDifference < 0)

        button.center = self.tabBar.center;

    else

    {

        CGPoint center = self.tabBar.center;

        center.y = center.y - heightDifference/2.0;

        button.center = center;

    }

    

    [self.view addSubview:button];



放上github的地址,大家下载看看吧

https://github.com/daniel1214/OutshotTabbarDemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值