// // HMEmoticonToolbar.m // 表情键盘 // // Created by 刘凡 on 16/3/3. // Copyright © 2016年 itcast. All rights reserved. // #import "HMEmoticonToolbar.h" #import "UIImage+HMEmoticon.h" #import "HMEmoticonManager.h" /// 按钮 tag 起始数值 static NSInteger kEmoticonToolbarTagBaseValue = 1000; @implementation HMEmoticonToolbar { UIButton *_selectedButton; } #pragma mark - 构造函数 - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self prepareUI]; } return self; } - (instancetype)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; if (self) { [self prepareUI]; } return self; } - (void)layoutSubviews { [super layoutSubviews]; // 计算分组按钮位置 CGRect rect = self.bounds; CGFloat w = rect.size.width / self.subviews.count; rect.size.width = w; int index = 0; for (UIView *v in self.subviews) { v.frame = CGRectOffset(rect, index++ * w, 0); } } #pragma mark - 公共方法 - (void)selectSection:(NSInteger)section { UIButton *button = [self viewWithTag:(section + kEmoticonToolbarTagBaseValue)]; [self selectedButtonWithButton:button]; } #pragma mark - 监听方法 /// 点击工具栏按钮 - (void)clickToolbarButton:(UIButton *)button { if (button == _selectedButton) { return; } [self selectedButtonWithButton:button]; [self.delegate emoticonToolbarDidSelectSection:button.tag - kEmoticonToolbarTagBaseValue]; } /// 将指定的按钮设置为选中按钮 - (void)selectedButtonWithButton:(UIButton *)button { button.selected = !button.selected; _selectedButton.selected = !_selectedButton.selected; _selectedButton = button; } #pragma mark - 设置界面 - (void)prepareUI { NSArray *packages = [HMEmoticonManager sharedManager].packages; // 创建按钮 NSInteger index = 0; for (HMEmoticonPackage *package in packages) { [self addChildButton:package.groupName bgImageName:package.bgImageName type:index++]; } } - (void)addChildButton:(NSString *)title bgImageName:(NSString *)bgImageName type:(NSInteger)type { UIButton *btn = [[UIButton alloc] init]; btn.tag = type + kEmoticonToolbarTagBaseValue; [btn setTitle:title forState:UIControlStateNormal]; btn.titleLabel.font = [UIFont systemFontOfSize:14]; [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [btn setTitleColor:[UIColor grayColor] forState:UIControlStateSelected]; NSString *imageName = [NSString stringWithFormat:@"compose_emotion_table_%@_normal", bgImageName]; NSString *imageNameSL = [NSString stringWithFormat:@"compose_emotion_table_%@_selected", bgImageName]; [btn setBackgroundImage:[[UIImage hm_imageNamed:imageName] hm_resizableImage] forState:UIControlStateNormal]; [btn setBackgroundImage:[[UIImage hm_imageNamed:imageNameSL] hm_resizableImage] forState:UIControlStateSelected]; [btn addTarget:self action:@selector(clickToolbarButton:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:btn]; } @end