对这里的内容进行第二次封装:
http://blog.csdn.net/ayaseeli/article/details/42204397
- #import "MJTabBar.h"
- #import "MJTabBarButton.h"
- @interface MJTabBar()
- /**
- * 记录当前选中的按钮
- */
- @property (nonatomic, weak) MJTabBarButton *selectedButton;
- @end
- @implementation MJTabBar
- - (void)addTabButtonWithName:(NSString *)name selName:(NSString *)selName
- {
- // 创建按钮
- MJTabBarButton *button = [MJTabBarButton buttonWithType:UIButtonTypeCustom];
- // 设置图片
- [button setBackgroundImage:[UIImage imageNamed:name] forState:UIControlStateNormal];
- [button setBackgroundImage:[UIImage imageNamed:selName] forState:UIControlStateSelected];
- // 添加
- [self addSubview:button];
- #warning UIControlEventTouchDown : 手指一按下去就会触发这个事件
- // 监听
- [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchDown];
- // 默认选中第0个按钮
- if (self.subviews.count == 1) {
- [self buttonClick:button];
- }
- }
- - (void)layoutSubviews
- {
- [super layoutSubviews];
- int count = self.subviews.count;
- for (int i = 0; i<count; i++) {
- MJTabBarButton *button = self.subviews[i];
- button.tag = i;
- // 设置frame
- CGFloat buttonY = 0;
- CGFloat buttonW = self.frame.size.width / count;
- CGFloat buttonH = self.frame.size.height;
- CGFloat buttonX = i * buttonW;
- button.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH);
- }
- }
- /**
- * 监听按钮点击
- */
- - (void)buttonClick:(MJTabBarButton *)button
- {
- // 0.通知代理
- if ([self.delegate respondsToSelector:@selector(tabBar:didSelectButtonFrom:to:)]) {
- [self.delegate tabBar:self didSelectButtonFrom:self.selectedButton.tag to:button.tag];
- }
- // 1.让当前选中的按钮取消选中
- self.selectedButton.selected = NO;
- // 2.让新点击的按钮选中
- button.selected = YES;
- // 3.新点击的按钮就成为了"当前选中的按钮"
- self.selectedButton = button;
- }
- @end