BottomTabBar.m 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. //
  2. // BottomTabBar.m
  3. // DeviceManageIOSApp
  4. //
  5. // Created by rushanting on 2017/5/11.
  6. // Copyright © 2017年 tencent. All rights reserved.
  7. //
  8. #import "BottomTabBar.h"
  9. #import "ColorMacro.h"
  10. #import "UIView+Additions.h"
  11. #define kButtonCount 6
  12. @implementation BottomTabBar
  13. {
  14. UIView* _contentView;
  15. UIButton* _btnMusic; //音乐
  16. UILabel* _labelMusic; //音乐
  17. UIButton* _btnEffect; //特效
  18. UILabel* _labelEffect; //特效
  19. UIButton* _btnTime; //时间特效
  20. UILabel* _labelTime; //时间特效
  21. UIButton* _btnFilter; //滤镜
  22. UILabel* _labelFilter; //滤镜
  23. UIButton* _btnPaster; //贴纸
  24. UILabel* _labelPaster; //贴纸
  25. UIButton* _btnText; //字幕
  26. UILabel* _labelText; //字幕
  27. BOOL _isHidden;
  28. }
  29. - (id)initWithFrame:(CGRect)frame
  30. {
  31. if (self = [super initWithFrame:frame]) {
  32. _contentView = [[UIView alloc] initWithFrame:self.bounds];
  33. _contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  34. [self addSubview:_contentView];
  35. _btnMusic = [[UIButton alloc] init];
  36. [_btnMusic setImage:[UIImage imageNamed:@"music_nomal"] forState:UIControlStateNormal];
  37. [_btnMusic setImage:[UIImage imageNamed:@"music_press"] forState:UIControlStateHighlighted];
  38. [_btnMusic addTarget:self action:@selector(onMusicBtnClicked) forControlEvents:UIControlEventTouchUpInside];
  39. [_contentView addSubview:_btnMusic];
  40. _labelMusic = [[UILabel alloc] initWithFrame:CGRectZero];
  41. _labelMusic.text = NSLocalizedString(@"BottomTabBar.TabMusic", nil);
  42. _labelMusic.font = [UIFont systemFontOfSize:10];
  43. _labelMusic.textColor = [UIColor whiteColor];
  44. _labelMusic.textAlignment = NSTextAlignmentCenter;
  45. [_contentView addSubview:_labelMusic];
  46. _btnEffect = [[UIButton alloc] init];
  47. [_btnEffect setImage:[UIImage imageNamed:@"filter_nomal"] forState:UIControlStateNormal];
  48. [_btnEffect setImage:[UIImage imageNamed:@"filter_press"] forState:UIControlStateHighlighted];
  49. [_btnEffect addTarget:self action:@selector(onEffectBtnClicked) forControlEvents:UIControlEventTouchUpInside];
  50. [_contentView addSubview:_btnEffect];
  51. _labelEffect = [[UILabel alloc] initWithFrame:CGRectZero];
  52. _labelEffect.text = NSLocalizedString(@"BottomTabBar.TabEffect", nil);
  53. _labelEffect.font = [UIFont systemFontOfSize:10];
  54. _labelEffect.textColor = [UIColor whiteColor];
  55. _labelEffect.textAlignment = NSTextAlignmentCenter;
  56. [_contentView addSubview:_labelEffect];
  57. _btnTime = [[UIButton alloc] init];
  58. [_btnTime setImage:[UIImage imageNamed:@"speed_nomal"] forState:UIControlStateNormal];
  59. [_btnTime setImage:[UIImage imageNamed:@"speed_press"] forState:UIControlStateHighlighted];
  60. [_btnTime addTarget:self action:@selector(onTimeBtnClicked) forControlEvents:UIControlEventTouchUpInside];
  61. [_contentView addSubview:_btnTime];
  62. _labelTime = [[UILabel alloc] initWithFrame:CGRectZero];
  63. _labelTime.text = NSLocalizedString(@"BottomTabBar.TabSpeed", nil);
  64. _labelTime.font = [UIFont systemFontOfSize:10];
  65. _labelTime.textColor = [UIColor whiteColor];
  66. _labelTime.textAlignment = NSTextAlignmentCenter;
  67. [_contentView addSubview:_labelTime];
  68. _btnFilter = [[UIButton alloc] init];
  69. [_btnFilter setImage:[UIImage imageNamed:@"color_nomal"] forState:UIControlStateNormal];
  70. [_btnFilter setImage:[UIImage imageNamed:@"color_press"] forState:UIControlStateHighlighted];
  71. [_btnFilter addTarget:self action:@selector(onFilterBtnClicked) forControlEvents:UIControlEventTouchUpInside];
  72. [_contentView addSubview:_btnFilter];
  73. _labelFilter = [[UILabel alloc] initWithFrame:CGRectZero];
  74. _labelFilter.text = NSLocalizedString(@"BottomTabBar.TabFilter", nil);
  75. _labelFilter.font = [UIFont systemFontOfSize:10];
  76. _labelFilter.textColor = [UIColor whiteColor];
  77. _labelFilter.textAlignment = NSTextAlignmentCenter;
  78. [_contentView addSubview:_labelFilter];
  79. _btnPaster = [[UIButton alloc] init];
  80. [_btnPaster setImage:[UIImage imageNamed:@"paster_normal"] forState:UIControlStateNormal];
  81. [_btnPaster setImage:[UIImage imageNamed:@"paster_press"] forState:UIControlStateHighlighted];
  82. [_btnPaster addTarget:self action:@selector(onPasterBtnClicked) forControlEvents:UIControlEventTouchUpInside];
  83. [_contentView addSubview:_btnPaster];
  84. _labelPaster = [[UILabel alloc] initWithFrame:CGRectZero];
  85. _labelPaster.text = NSLocalizedString(@"BottomTabBar.TabPaster", nil);
  86. _labelPaster.font = [UIFont systemFontOfSize:10];
  87. _labelPaster.textColor = [UIColor whiteColor];
  88. _labelPaster.textAlignment = NSTextAlignmentCenter;
  89. [_contentView addSubview:_labelPaster];
  90. _btnText = [[UIButton alloc] init];
  91. [_btnText setImage:[UIImage imageNamed:@"subtitle_normal"] forState:UIControlStateNormal];
  92. [_btnText setImage:[UIImage imageNamed:@"subtitle_press"] forState:UIControlStateHighlighted];
  93. [_btnText addTarget:self action:@selector(onTextBtnClicked) forControlEvents:UIControlEventTouchUpInside];
  94. [_contentView addSubview:_btnText];
  95. _labelText = [[UILabel alloc] initWithFrame:CGRectZero];
  96. _labelText.text =NSLocalizedString(@"BottomTabBar.TabSubtitle", nil);
  97. _labelText.font = [UIFont systemFontOfSize:10];
  98. _labelText.textColor = [UIColor whiteColor];
  99. _labelText.textAlignment = NSTextAlignmentCenter;
  100. [_contentView addSubview:_labelText];
  101. }
  102. return self;
  103. }
  104. - (void)layoutSubviews
  105. {
  106. [super layoutSubviews];
  107. CGFloat buttonWidth= self.width / kButtonCount;
  108. int i = 0;
  109. _btnMusic.frame = CGRectMake(buttonWidth * i++, 0, buttonWidth, self.height);
  110. _btnEffect.frame = CGRectMake(buttonWidth * i++, 0, buttonWidth, self.height);
  111. _btnTime.frame = CGRectMake(buttonWidth * i++, 0, buttonWidth, self.height);
  112. _btnFilter.frame = CGRectMake(buttonWidth * i++, 0, buttonWidth, self.height);
  113. _btnPaster.frame = CGRectMake(buttonWidth * i++, 0, buttonWidth, self.height);
  114. _btnText.frame = CGRectMake(buttonWidth * i++, 0, buttonWidth, self.height);
  115. CGFloat yOffset = 26 * kScaleY;
  116. _labelMusic.frame = CGRectOffset(_btnMusic.frame, 0, yOffset);
  117. _labelEffect.frame = CGRectOffset(_btnEffect.frame, 0, yOffset);
  118. _labelTime.frame = CGRectOffset(_btnTime.frame, 0, yOffset);
  119. _labelFilter.frame = CGRectOffset(_btnFilter.frame, 0, yOffset);
  120. _labelPaster.frame = CGRectOffset(_btnPaster.frame, 0, yOffset);
  121. _labelText.frame = CGRectOffset(_btnText.frame, 0, yOffset);
  122. }
  123. - (void)setHidden:(BOOL)hidden
  124. {
  125. if (_isHidden == hidden) return;
  126. _isHidden = hidden;
  127. CGFloat height = self.frame.size.height;
  128. if (hidden) {
  129. if (_contentView.bottom > height) return;
  130. [UIView animateWithDuration:0.1 animations:^{
  131. _contentView.frame = CGRectOffset(_contentView.frame, 0, 62 * kScaleY);
  132. _contentView.alpha = 0.0;
  133. }];
  134. }else{
  135. if (_contentView.bottom <= height) return;
  136. [UIView animateWithDuration:0.5 animations:^{
  137. _contentView.frame = CGRectOffset(_contentView.frame, 0, -62 * kScaleY);
  138. _contentView.alpha = 1.0;
  139. }];
  140. }
  141. }
  142. - (BOOL)isHidden {
  143. return _isHidden;
  144. }
  145. #pragma mark - click handle
  146. - (void)onMusicBtnClicked
  147. {
  148. [self.delegate onMusicBtnClicked];
  149. }
  150. - (void)onTimeBtnClicked
  151. {
  152. [self.delegate onTimeBtnClicked];
  153. }
  154. - (void)onEffectBtnClicked
  155. {
  156. [self.delegate onEffectBtnClicked];
  157. }
  158. - (void)onFilterBtnClicked
  159. {
  160. [self.delegate onFilterBtnClicked];
  161. }
  162. - (void)onTextBtnClicked
  163. {
  164. [self.delegate onTextBtnClicked];
  165. }
  166. - (void)onPasterBtnClicked
  167. {
  168. [self.delegate onPasterBtnClicked];
  169. }
  170. @end