• UITabBar 是一个比较常用的工具 ...我们可以通过自定义TabBar来实现 首先新建一个项目 创建一个类继承字UITabBar 创建一个协议和按钮 #import @class MYTabBar; @protocol MYTabBarDelegate

    UITabBar 是一个比较常用的工具

    有的时候系统的样式不能满足需求,我们可以考虑自定义

    中间的+ 就属于自定义样式


    我们可以通过自定义TabBar来实现

    首先新建一个项目

    创建一个类继承字UITabBar

    创建一个协议和按钮

    #import <UIKit/UIKit.h>
    
    @class MYTabBar;
    
    @protocol MYTabBarDelegate <UITabBarDelegate>
    
    @optional
    
    - (void)tabBarDidClickPlusButton:(MYTabBar *)tabBar;
    
    @end
    
    
    @interface MYTabBar : UITabBar
    
    @property (strong,nonatomic) UIButton *plusBtn;
    @property (nonatomic, weak) id<MYTabBarDelegate> tabBarDelegate;
    
    @end
    

    在MyTabBar 的实现中首先添加按钮 设置按钮的图片 点击等

    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            // 添加一个按钮到tabbar中
            UIButton *plusBtn = [[UIButton alloc] init];
            [plusBtn setImage:[UIImage imageNamed:@"tabbar_mainbtn1.png"] forState:UIControlStateNormal];
            CGRect temp = plusBtn.frame;
            temp.size=plusBtn.currentImage.size;
            plusBtn.frame=temp;
            [plusBtn addTarget:self action:@selector(plusClick) forControlEvents:UIControlEventTouchUpInside];
            [self addSubview:plusBtn];
            self.plusBtn = plusBtn;
        }
        return self;
    }

    将按钮点击的方法设置到他的代理中

    #pragma mark 加号按钮点击事件处理器
    - (void)plusClick
    {
        // 通知代理
        if ([self.tabBarDelegate respondsToSelector:@selector(tabBarDidClickPlusButton:)]) {
            [self.tabBarDelegate tabBarDidClickPlusButton:self];
        }
    }
    



    同时 ,重新调整按钮的位置
    - (void)layoutSubviews
    {
        [super layoutSubviews];
        
        // 1.设置加号按钮的位置
        CGPoint temp = self.plusBtn.center;
        temp.x=self.frame.size.width/2;
        temp.y=self.frame.size.height/2;
        self.plusBtn.center=temp;
        
        // 2.设置其它UITabBarButton的位置和尺寸
        CGFloat tabbarButtonW = self.frame.size.width / 5;
        CGFloat tabbarButtonIndex = 0;
        for (UIView *child in self.subviews) {
            Class class = NSClassFromString(@"UITabBarButton");
            if ([child isKindOfClass:class]) {
                // 设置宽度
                CGRect temp1=child.frame;
                temp1.size.width=tabbarButtonW;
                temp1.origin.x=tabbarButtonIndex * tabbarButtonW;
                child.frame=temp1;
                // 增加索引
                tabbarButtonIndex++;
                if (tabbarButtonIndex == 2) {
                    tabbarButtonIndex++;
                }
            }
        }
    }
    

    好了 自定义TabBar 好了 

    我们在创建一个类MainViewController 继承自UITabBarController  

    使用KVC方法设置TabBar

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        MYTabBar *tabBar = [[MYTabBar alloc] init];
        tabBar.tabBarDelegate = self;
        
        [self setValue:tabBar forKeyPath:@"tabBar"];
        
    }


    同时实现代理方法

    #pragma mark - MYTabBarDelegate代理方法
    - (void)tabBarDidClickPlusButton:(MYTabBar *)tabBar
    {
        AddViewController *addVC= [[AddViewController alloc] init];
        
        [self presentViewController:addVC animated:YES completion:nil];
    }
    


    好了  剩下的就是设置UITabBarControl 

    我们在项目默认生成的AppDelegate 中设置rootViewController为我们的MainViewControler

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        //创建几个ViewController
        FirstViewController *firstVC = [[FirstViewController alloc]init];
        SecondViewController *secondVC = [[SecondViewController alloc]init];
        ThirdViewController *thirdVC = [[ThirdViewController alloc]init];
        ForthViewController *forthVC = [[ForthViewController alloc]init];
        
        
        //创建MainViewController并将创建好的ViewController添加到TabBar上
        MainViewController *tabBarC=[[MainViewController alloc]init];
        tabBarC.viewControllers=@[firstVC,secondVC,thirdVC,forthVC];
        
        for (UIViewController *controller in tabBarC.viewControllers) {
            UIViewController *view= controller.view;
        }
        
        self.window.rootViewController=tabBarC;
        return YES;
    }


    完成之后看下效果


    TabBar的样式已经出来了 如果需要,可以自己换成微博的图片就可以了


    源代码 我上传到QQ群 大家有兴趣去看下


    demo:【60331MYTabBar.zip】

    苹果开发群 :414319235  欢迎加入,共同学习


    展开全文
  • 原文链接:仿微博 iOS 客户端 TabBar 中间按钮项目源码:模仿微博客户端项目源码 我在模仿微博 iOS 客户端。如图: 微博客户端 TabBar 中间按钮和其他按钮不一样,一个是样式不一样,一个是点击事件不一样。 思路 ...
  • 1.初始化自定义TabBar 自定义一个IWTabBar继承于UIView。在控制器启动的时候初始化初始化TabBar。 /** * 初始化tabbar */ - (void)setupTabbar { IWTabBar *customTabBar = [[IWTabBar alloc] init]; ...
  • TabBar按钮中弹出菜单按钮的实现思路 仿新浪微博客户端“加号”按钮弹出动画 仿微博、QQ空间 iOS 客户端 TabBar 中间按钮
  • 1.AppDelegate设置 新建MRRootTabBarController继承UITabBarViewController 添加头文件:#import "MRRootTabBarController.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:...
  • Swift学习资料@SwiftGuide很赞 的Swift学习资料leetcode一个练习、评估自己水平的代码平台,跟ACM有点类似完整App@Swift 30 Projects- 最新 Swift 3.0 的30个小App,更注重代码规范和架构设计(故胤道长)V2ex-Swift- ...
  • APP的主要功能有三点:1.美颜相机;2.相册分类管理;3.基于相册分类、用户标签及用户行为的人物画像的社交功能。 优图人脸识别、图片标签识别、基于人物画像和地理位置的精准推荐社交、ios开发的聊天功能、ios开发的...
  • 全面的Swift学习资料整理 2016-12-30 17:08:14
    资料1 ---教程类 官方文档中文翻译http://wiki.jikexueyuan.com/project/swift/Github上的地址点我 Using Swift with Cocoa and Objective-C ...Swift 开源及跨平台开发swift.org 斯坦福课程Stanford Un
  • swift 框架大全 2017-06-26 11:27:09
    版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1. 将Swift从Objective-C混合的md文件中抽出(正在进行…) 使用方法:根据目录关键字...
  • 一、表相关与Tabbar //====================== SWTableViewCell - 国内开源作者,带很多手势的表单元格。 MCSwipeTableViewCell - 带很多手势的表单元格。 TMQuiltView - 瀑布流。 ...
  • swift 学习资料大全 2017-07-15 18:22:50
    版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1. 将Swift从Objective-C混合的md文件中抽出(正在进行…) 使用方法:根据目录关键字...
  • iOS开发之swift资料大全 2017-09-18 17:46:06
    版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1. 将Swift从Objective-C混合的md文件中抽出(正在进行…) 使用方法:根据目录关键字...
  • Swift从Objective-C混合的md文件中抽出(正在进行…)使用方法:根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性。问题反馈:请广大网友只按照目录结构(即使目录结构有问题)添加三方库,并pu
  • swift 干货 2017-03-02 17:45:59
    Swift从Objective-C混合的md文件中抽出(正在进行…)使用方法:根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性。问题反馈:请广大网友只按照目录结构(即使目录结构有问题)
  • Top 10 swift projects on github 2019-05-16 08:07:25
    1.iina A few of the Features: Based on mpv, which provides the best decoding capacity on macOS Designed for modern macOS (10.10+), aims to offer the best user experience All the features you nee...
  • 整理了Xcode好用的插件,包括OC和Swift,信息更详细和完整 下拉刷新 EGOTableViewPullRefresh– 最早的下拉刷新控件。 SVPullToRefresh– 下拉刷新控件。 MJRefresh– 仅需一行代码就可以为UITableView或者...
  • Swift版本点击这里欢迎加入交QQ流群: 594119878github排名 https://github.com/trending,github搜索:https://github.com/search使用方法:根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性。...
  • TimLiu-iOSgithub排名 https://github.com/trending,github搜索:https://github.com/searchObjective-C版本点击这里 欢迎加入QQ交流群: 594119878使用方法:根据目录关键字搜索,记得包含@,以保证搜索目录关键字...
1 2 3 4 5 ... 20
收藏数 408
精华内容 163