新浪微博客户端(8)-添加按钮到TabBar
在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 = 0; NSUInteger childWidth = self.width / 5; for (UIView *childView in self.subviews) { if ([childView isKindOfClass:clazz]) { // 如果是第三个tabBar,则自动跳转到第四个 if (currentChildIndex == 2) { 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"];
最终效果: