自定义tabBar的使用

原创 2016年08月30日 17:50:32

首先,新建一个自定义的tabbar 继承UITabBar

#import "ZGTabBar.h"

@interface ZGTabBar()
@property (nonatomic, weak) UIButton *plusBtn;
@end

@implementation ZGTabBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // 添加一个按钮到tabbar中
        UIButton *plusBtn = [[UIButton alloc] init];
        //.....一系列对button的设置
        plusBtn.size = plusBtn.currentBackgroundImage.size;
        [plusBtn addTarget:self action:@selector(plusClick) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:plusBtn];
        self.plusBtn = plusBtn;
    }
    return self;
}

/**
 *  加号按钮点击
 */
- (void)plusClick
{
    // 通知代理
    if ([self.delegate respondsToSelector:@selector(tabBarDidClickPlusButton:)]) {
        [self.delegate tabBarDidClickPlusButton:self];
    }
}

- (void)layoutSubviews
{
#warning [super layoutSubviews] 一定要调用
    [super layoutSubviews];

    // 1.设置加号按钮的位置
    self.plusBtn.centerX = self.width * 0.5;
    self.plusBtn.centerY = self.height * 0.5;

    // 2.设置其他tabbarButton的位置和尺寸
    CGFloat tabbarButtonW = self.width / 5;
    CGFloat tabbarButtonIndex = 0;
    for (UIView *child in self.subviews) {
        Class class = NSClassFromString(@"UITabBarButton");
        if ([child isKindOfClass:class]) {
            // 设置宽度
            child.width = tabbarButtonW;
            // 设置x
            child.x = tabbarButtonIndex * tabbarButtonW;

            // 增加索引
            tabbarButtonIndex++;
            if (tabbarButtonIndex == 2) {
                tabbarButtonIndex++;
            }
        }
    }
}

@end

然后再在tabBarController中替换系统自带的tabbar

#import "ZGTabBarViewController.h"
#import "ZGTabBar.h"

@implementation HWTabBarViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    ZGTabBar *tabBar = [[HWTabBar alloc] init];
    [self setValue:tabBar forKeyPath:@"tabBar"];
    /*
     [self setValue:tabBar forKeyPath:@"tabBar"];相当于self.tabBar = tabBar;
     [self setValue:tabBar forKeyPath:@"tabBar"];这行代码过后,tabBar的delegate就是HWTabBarViewController
     说明,不用再设置tabBar.delegate = self;
     */
    /*
     1.如果tabBar设置完delegate后,再执行下面代码修改delegate,就会报错
     tabBar.delegate = self;

     2.如果再次修改tabBar的delegate属性,就会报下面的错误
     错误信息:Changing the delegate of a tab bar managed by a tab bar controller is not allowed.
     错误意思:不允许修改TabBar的delegate属性(这个TabBar是被TabBarViewController所管理的)
     */

}

@end
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS自定义TabBar使用popToRootViewControllerAnimated重叠问题解决

先看下现象吧,如下图: 不仅仅重叠了,而且还把图标给覆盖了。很郁闷。 折腾了很久,终于找到解决办法了。 在自定也的NavigationController中添加如下代码: - (void)view...

自定义tabBarItem,仍是使用系统的tabBar

- (void)viewDidLoad { [super viewDidLoad]; // 使用系统自带的tabBar注意这两个函数的先后顺序 [self creat...

《 Swift UITabBarController 的使用和自定义TabBar,和部分属性和代理的使用》

/*      《 Swift  UITabBarController 的使用和自定义TabBar,和部分属性和代理的使用》 */ /*     标签栏控制器是当前市场App...

自定义Tabbar

  • 2016-09-22 14:42
  • 325KB
  • 下载

自定义tabBar

  • 2014-09-29 16:18
  • 3.75MB
  • 下载

ios开发-UI-自定义Tabbar 图书布局

#import "ViewController.h" #import "CGTabbar.h" #import "QHCListView.h" #import "QHJavaListView.h" #...

IOS 用户自定义TabBar

  • 2014-09-06 23:19
  • 83KB
  • 下载

自定义Tabbar

  • 2014-03-05 11:44
  • 11KB
  • 下载

IOS开发UI:自定义TabBar

先定义一个继承至UITabBarController的类 UITabBarController.m的 内容为 由于系统UITabBar无法满足我们的需求所以我们自定义一个属于自...

自定义tabbar

  • 2015-08-17 19:24
  • 60KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)