PhotoTransitionToolbar.m 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //
  2. // TransitionView.m
  3. // TXLiteAVDemo_Enterprise
  4. //
  5. // Created by xiang zhang on 2018/5/11.
  6. // Copyright © 2018年 Tencent. All rights reserved.
  7. //
  8. #import "PhotoTransitionToolbar.h"
  9. //#import "UIView+AdditionsX12.h"
  10. #import "ColorMacro.h"
  11. #import "VerticalButton.h"
  12. #define TRANSITIN_IMAGE_WIDTH 40 * kScaleY
  13. #define TRANSITIN_IMAGE_SPACE 10
  14. @implementation PhotoTransitionToolbar
  15. {
  16. UIScrollView *_transitionView;
  17. }
  18. - (instancetype)initWithFrame:(CGRect)frame
  19. {
  20. self = [super initWithFrame:frame];
  21. if (self) {
  22. NSArray *transitionNames = @[YZMsg(@"左右"),YZMsg(@"上下"),YZMsg(@"放大"),YZMsg(@"缩小"),YZMsg(@"旋转"),YZMsg(@"淡入淡出")];
  23. NSArray *imageNames = @[@"Horizontal", @"Vertical", @"ZoomIn", @"ZoomOut", @"Rotation", @"FadeInFadeOut"];
  24. NSAssert(transitionNames.count == imageNames.count, @"Count mismatch, please check");
  25. _transitionView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0, self.width,TRANSITIN_IMAGE_WIDTH)];
  26. _transitionView.showsVerticalScrollIndicator = NO;
  27. _transitionView.showsHorizontalScrollIndicator = NO;
  28. CGFloat itemWidth = floor(frame.size.width / imageNames.count);
  29. CGFloat halfSpace = 2;
  30. for (int i = 0 ; i < transitionNames.count ; i ++){
  31. UIButton *btn = [[VerticalButton alloc] initWithTitle:transitionNames[i]];
  32. btn.titleLabel.font = [UIFont systemFontOfSize:10];
  33. btn.titleLabel.adjustsFontSizeToFitWidth = YES;
  34. [btn setImage:[UIImage imageNamed:[imageNames[i] stringByAppendingString:@"-normal"]] forState:UIControlStateNormal];
  35. [btn setImage:[UIImage imageNamed:[imageNames[i] stringByAppendingString:@"-press"]] forState:UIControlStateSelected];
  36. [btn setTitleColor:[UIColor colorWithWhite:0.94 alpha:1] forState:UIControlStateSelected];
  37. btn.tag = i;
  38. [btn setFrame:CGRectMake(itemWidth * i + halfSpace, 0, itemWidth - halfSpace * 2, TRANSITIN_IMAGE_WIDTH)];
  39. [btn addTarget:self action:@selector(onBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  40. [_transitionView addSubview:btn];
  41. if (i == 0) {
  42. [self resetBtnColor:btn];
  43. }
  44. }
  45. [self addSubview:_transitionView];
  46. }
  47. return self;
  48. }
  49. - (void)onBtnClick:(UIButton *)btn
  50. {
  51. if (btn.tag == 0) {
  52. if (_delegate && [_delegate respondsToSelector:@selector(onVideoTransitionUpDownSlipping)]) {
  53. [_delegate onVideoTransitionLefRightSlipping];
  54. }
  55. }
  56. else if (btn.tag == 1) {
  57. if (_delegate && [_delegate respondsToSelector:@selector(onVideoTransitionUpDownSlipping)]) {
  58. [_delegate onVideoTransitionUpDownSlipping];
  59. }
  60. }
  61. else if (btn.tag == 2){
  62. if (_delegate && [_delegate respondsToSelector:@selector(onVideoTransitionEnlarge)]) {
  63. [_delegate onVideoTransitionEnlarge];
  64. }
  65. }
  66. else if (btn.tag == 3){
  67. if (_delegate && [_delegate respondsToSelector:@selector(onVideoTransitionNarrow)]) {
  68. [_delegate onVideoTransitionNarrow];
  69. }
  70. }
  71. else if (btn.tag == 4){
  72. if (_delegate && [_delegate respondsToSelector:@selector(onVideoTransitionNarrow)]) {
  73. [_delegate onVideoTransitionRotationalScaling];
  74. }
  75. }
  76. else if (btn.tag == 5){
  77. if (_delegate && [_delegate respondsToSelector:@selector(onVideoTransitionNarrow)]) {
  78. [_delegate onVideoTransitionFadeinFadeout];
  79. }
  80. }
  81. [self resetBtnColor:btn];
  82. }
  83. - (void)resetBtnColor:(UIButton *)btn
  84. {
  85. for (UIButton * btn in _transitionView.subviews) {
  86. btn.selected = NO;
  87. }
  88. btn.selected = YES;
  89. }
  90. @end