You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.3 KiB
129 lines
4.3 KiB
![]()
2 years ago
|
//
|
||
|
// XHEmotionSectionBar.m
|
||
|
// MessageDisplayExample
|
||
|
//
|
||
|
// Created by HUAJIE-1 on 14-5-3.
|
||
|
// Copyright (c) 2014年 曾宪华 开发团队(http://iyilunba.com ) 本人QQ:543413507 本人QQ群(142557668). All rights reserved.
|
||
|
//
|
||
|
|
||
|
#import "XHEmotionSectionBar.h"
|
||
|
|
||
|
#define kXHStoreManagerItemWidth 40
|
||
|
|
||
|
@interface XHEmotionSectionBar ()
|
||
|
|
||
|
/**
|
||
|
* 是否显示表情商店的按钮
|
||
|
*/
|
||
|
@property (nonatomic, assign) BOOL isShowEmotionStoreButton; // default is YES
|
||
|
|
||
|
|
||
|
@property (nonatomic, weak) UIScrollView *sectionBarScrollView;
|
||
|
@property (nonatomic, weak) UIButton *storeManagerItemButton;
|
||
|
|
||
|
@end
|
||
|
|
||
|
@implementation XHEmotionSectionBar
|
||
|
|
||
|
- (void)sectionButtonClicked:(UIButton *)sender {
|
||
|
if ([self.delegate respondsToSelector:@selector(didSelecteEmotionManager:atSection:)]) {
|
||
|
NSInteger section = sender.tag;
|
||
|
if (section < self.emotionManagers.count) {
|
||
|
[self.delegate didSelecteEmotionManager:[self.emotionManagers objectAtIndex:section] atSection:section];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- (UIButton *)cratedButton {
|
||
|
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
|
button.frame = CGRectMake(0, 0, kXHStoreManagerItemWidth, CGRectGetHeight(self.bounds));
|
||
|
[button addTarget:self action:@selector(sectionButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
|
||
|
return button;
|
||
|
}
|
||
|
|
||
|
- (void)reloadData {
|
||
|
if (!self.emotionManagers.count)
|
||
|
return;
|
||
|
|
||
|
[self.sectionBarScrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
|
||
|
|
||
|
for (XHEmotionManager *emotionManager in self.emotionManagers) {
|
||
|
NSInteger index = [self.emotionManagers indexOfObject:emotionManager];
|
||
|
UIButton *sectionButton = [self cratedButton];
|
||
|
sectionButton.tag = index;
|
||
|
[sectionButton setTitle:emotionManager.emotionName forState:UIControlStateNormal];
|
||
|
sectionButton.titleLabel.font = [UIFont systemFontOfSize:14];
|
||
|
|
||
|
CGRect sectionButtonFrame = sectionButton.frame;
|
||
|
sectionButtonFrame.origin.x = index * (CGRectGetWidth(sectionButtonFrame));
|
||
|
sectionButton.frame = sectionButtonFrame;
|
||
|
|
||
|
|
||
|
[self.sectionBarScrollView addSubview:sectionButton];
|
||
|
}
|
||
|
|
||
|
[self.sectionBarScrollView setContentSize:CGSizeMake(self.emotionManagers.count * kXHStoreManagerItemWidth, CGRectGetHeight(self.bounds))];
|
||
|
}
|
||
|
|
||
|
#pragma mark - Lefy cycle
|
||
|
|
||
|
- (void)setup {
|
||
|
if (!_sectionBarScrollView) {
|
||
|
CGFloat scrollWidth = CGRectGetWidth(self.bounds);
|
||
|
if (self.isShowEmotionStoreButton) {
|
||
|
scrollWidth -= kXHStoreManagerItemWidth;
|
||
|
}
|
||
|
UIScrollView *sectionBarScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, scrollWidth, CGRectGetHeight(self.bounds))];
|
||
|
[sectionBarScrollView setScrollsToTop:NO];
|
||
|
sectionBarScrollView.showsVerticalScrollIndicator = NO;
|
||
|
sectionBarScrollView.showsHorizontalScrollIndicator = NO;
|
||
|
sectionBarScrollView.pagingEnabled = NO;
|
||
|
[self addSubview:sectionBarScrollView];
|
||
|
_sectionBarScrollView = sectionBarScrollView;
|
||
|
}
|
||
|
|
||
|
if (self.isShowEmotionStoreButton) {
|
||
|
UIButton *storeManagerItemButton = [self cratedButton];
|
||
|
|
||
|
CGRect storeManagerItemButtonFrame = storeManagerItemButton.frame;
|
||
|
storeManagerItemButtonFrame.origin.x = CGRectGetWidth(self.bounds) - kXHStoreManagerItemWidth;
|
||
|
storeManagerItemButton.frame = storeManagerItemButtonFrame;
|
||
|
|
||
|
[storeManagerItemButton setTitle:@"商店" forState:UIControlStateNormal];
|
||
|
[storeManagerItemButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
|
||
|
[self addSubview:storeManagerItemButton];
|
||
|
_storeManagerItemButton = storeManagerItemButton;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- (instancetype)initWithFrame:(CGRect)frame showEmotionStoreButton:(BOOL)isShowEmotionStoreButtoned {
|
||
|
self = [super initWithFrame:frame];
|
||
|
if (self) {
|
||
|
// Initialization code
|
||
|
self.isShowEmotionStoreButton = isShowEmotionStoreButtoned;
|
||
|
[self setup];
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
|
||
|
- (void)dealloc {
|
||
|
self.emotionManagers = nil;
|
||
|
}
|
||
|
|
||
|
- (void)willMoveToSuperview:(UIView *)newSuperview {
|
||
|
if (newSuperview) {
|
||
|
[self reloadData];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
// Only override drawRect: if you perform custom drawing.
|
||
|
// An empty implementation adversely affects performance during animation.
|
||
|
- (void)drawRect:(CGRect)rect
|
||
|
{
|
||
|
// Drawing code
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
@end
|