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.
128 lines
4.4 KiB
128 lines
4.4 KiB
// |
|
// XHEmotionSectionBar.m |
|
// MessageDisplayExample |
|
// |
|
// Created by HUAJIE-1 on 14-5-3. |
|
// Copyright (c) 2014年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com 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
|
|
|