在tabBar的中部添加一个发送微博的按钮。
DJTabBar.h
#import <UIKit/UIKit.h> @class DJTabBar;
@protocol DJTabBarDelegate <UITabBarDelegate> @optional
- (void)tabBarDidClickPlusBtn:(DJTabBar *)tabBar; @end @interface DJTabBar : UITabBar + (instancetype)tabBar;
@property (nonatomic,weak) id<DJTabBarDelegate> delegate; @end
DJTabBar.m
#import "DJTabBar.h" @interface DJTabBar() @property (nonatomic,weak) UIButton *plusBtn; @end @implementation DJTabBar @dynamic delegate; - (UIButton *)plusBtn { if (!_plusBtn) { UIButton *plusBtn = [[UIButton alloc] init];
[plusBtn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button"] forState:UIControlStateNormal];
[plusBtn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button_highlighted"] forState:UIControlStateHighlighted]; [plusBtn setImage:[UIImage imageNamed:@"tabbar_compose_icon_add"] forState:UIControlStateNormal];
[plusBtn setImage:[UIImage imageNamed:@"tabbar_compose_icon_add_highlighted"] forState:UIControlStateHighlighted]; plusBtn.size = plusBtn.currentBackgroundImage.size; [self addSubview:plusBtn];
_plusBtn = plusBtn; }
return _plusBtn;
} + (instancetype)tabBar {
return [[self alloc] init];
} - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) {
[self.plusBtn addTarget:self action:@selector(plusBtnClick) forControlEvents:UIControlEventTouchUpInside];
}
return self;
} - (void)layoutSubviews { [super layoutSubviews]; // 设置plusBtn的位置
self.plusBtn.centerX = self.width * 0.5;
self.plusBtn.centerY = self.height *0.5; // 设置tabBa上面四个UIBarButton的位置 Class clazz = NSClassFromString(@"UITabBarButton");
NSUInteger currentChildIndex = ;
NSUInteger childWidth = self.width / ;
for (UIView *childView in self.subviews) {
if ([childView isKindOfClass:clazz]) {
// 如果是第三个tabBar,则自动跳转到第四个
if (currentChildIndex == ) {
currentChildIndex++;
}
// 调整位置及大小
childView.width = childWidth;
childView.x = childWidth * currentChildIndex;
// childView.backgroundColor = [UIColor redColor];
currentChildIndex++;
}
} } - (void)plusBtnClick {
DJLog(@"click.......");
if ([self.delegate respondsToSelector:@selector(tabBarDidClickPlusBtn:)]) {
[self.delegate tabBarDidClickPlusBtn:self];
}
} @end
DJMainViewController.m
// 2.添加发送微博按钮
DJTabBar *tabBar = [DJTabBar tabBar];
tabBar.delegate = self;
[self setValue:tabBar forKey:@"tabBar"];
最终效果: