EffectSelectView.m 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. //
  2. // VideoEffectSlider.m
  3. // TXLiteAVDemo
  4. //
  5. // Created by xiang zhang on 2017/11/3.
  6. // Copyright © 2017年 Tencent. All rights reserved.
  7. //
  8. #import "EffectSelectView.h"
  9. //#import "UIView+AdditionsX12.h"
  10. #import "ColorMacro.h"
  11. #define EFFCT_COUNT 4
  12. #define EFFCT_IMAGE_WIDTH 60 * kScaleY
  13. #define EFFCT_IMAGE_SPACE 20
  14. @implementation EffectSelectView
  15. {
  16. UIView *_allSub;
  17. UILabel *_titleL;
  18. UIScrollView *_effectSelectView;
  19. }
  20. - (instancetype)initWithFrame:(CGRect)frame
  21. {
  22. self = [super initWithFrame:frame];
  23. if (self) {
  24. _allSub = [[UIView alloc]initWithFrame:CGRectMake(0, (self.height-55-EFFCT_IMAGE_WIDTH)/2, self.width, 30+5+EFFCT_IMAGE_WIDTH+20)];
  25. _allSub.backgroundColor = [UIColor clearColor];
  26. [self addSubview:_allSub];
  27. _titleL = [[UILabel alloc]initWithFrame:CGRectMake(15, 0, self.width-30, 30)];
  28. _titleL.text = YZMsg(@"长按添加特效");
  29. _titleL.font = SYS_Font(16);
  30. _titleL.textColor = [UIColor whiteColor];
  31. [_allSub addSubview:_titleL];
  32. _delEffectBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  33. _delEffectBtn.backgroundColor = RGB_COLOR(@"#323232", 1);
  34. [_delEffectBtn setImage:[UIImage imageNamed:@"撤销"] forState:0];
  35. [_delEffectBtn setTitle:YZMsg(@"撤销") forState:0];
  36. _delEffectBtn.titleLabel.font = SYS_Font(13);
  37. [_delEffectBtn setTitleColor:RGB_COLOR(@"#969696", 1) forState:0];
  38. _delEffectBtn.frame = CGRectMake(_allSub.width-70, 0, 55, 26);
  39. _delEffectBtn.layer.masksToBounds = YES;
  40. _delEffectBtn.layer.cornerRadius = 5;
  41. [_delEffectBtn addTarget:self action:@selector(doDelEffectBtn) forControlEvents:UIControlEventTouchUpInside];
  42. [_allSub addSubview:_delEffectBtn];
  43. _delEffectBtn.hidden = YES;
  44. CGFloat space = (self.width - EFFCT_IMAGE_WIDTH * EFFCT_COUNT) / (EFFCT_COUNT + 1);
  45. _effectSelectView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,_titleL.bottom+5, self.width,EFFCT_IMAGE_WIDTH+20)];//动图高度(EFFCT_IMAGE_WIDTH)+标题高度(20)
  46. [_allSub addSubview:_effectSelectView];
  47. NSArray *effectNameS = @[YZMsg(@"抖动"),YZMsg(@"黑白"),YZMsg(@"灵魂出窍"),YZMsg(@"动感分屏")];
  48. //抖动-黑白-灵魂出窍-动感分屏
  49. UIImage *ddImg = [UIImage sd_imageWithGIFData:[PublicObj gifConvertDataWithName:@"其他特效-抖动"]];
  50. UIImage *hbImg = [UIImage sd_imageWithGIFData:[PublicObj gifConvertDataWithName:@"其他特效-黑白"]];
  51. UIImage *lhcqImg = [UIImage sd_imageWithGIFData:[PublicObj gifConvertDataWithName:@"其他特效-灵魂出窍"]];
  52. UIImage *dgfpImg = [UIImage sd_imageWithGIFData:[PublicObj gifConvertDataWithName:@"其他特效-动感分屏"]];
  53. NSArray *gifImgs = @[ddImg,hbImg,lhcqImg,dgfpImg];
  54. for (int i = 0 ; i < EFFCT_COUNT ; i ++){
  55. UIImageView *selImg = [[UIImageView alloc]initWithFrame:CGRectMake(space + (space + EFFCT_IMAGE_WIDTH) * i, 0, EFFCT_IMAGE_WIDTH, EFFCT_IMAGE_WIDTH)];
  56. [selImg setImage:gifImgs[i]];
  57. //gif有白边做个线圈遮挡毛边
  58. UIImageView *selbg = [[UIImageView alloc]initWithFrame:CGRectMake(space + (space + EFFCT_IMAGE_WIDTH) * i+3.5, 0+3.5, EFFCT_IMAGE_WIDTH-7, EFFCT_IMAGE_WIDTH-7)];
  59. selbg.layer.masksToBounds = YES;
  60. selbg.layer.cornerRadius = EFFCT_IMAGE_WIDTH/2-3.5;
  61. selbg.layer.borderColor = [UIColor whiteColor].CGColor;
  62. selbg.layer.borderWidth = 1.5;
  63. UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  64. [btn setFrame:CGRectMake(space + (space + EFFCT_IMAGE_WIDTH) * i, 0, EFFCT_IMAGE_WIDTH, EFFCT_IMAGE_WIDTH)];
  65. [btn setImage:[UIImage imageNamed:@""] forState:0];
  66. btn.tag = i;
  67. [btn addTarget:self action:@selector(beginPress:) forControlEvents:UIControlEventTouchDown];
  68. [btn addTarget:self action:@selector(endPress:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
  69. UILabel *title = [[UILabel alloc]initWithFrame:CGRectMake(btn.left, btn.bottom-2, btn.width, 20)];
  70. title.text = effectNameS[i];
  71. title.font = SYS_Font(14);
  72. if (IS_IPHONE_5) {
  73. title.font = SYS_Font(12);
  74. }
  75. title.textAlignment = NSTextAlignmentCenter;
  76. title.textColor = [UIColor whiteColor];
  77. [_effectSelectView addSubview:selImg];
  78. [_effectSelectView addSubview:selbg];
  79. [_effectSelectView addSubview:btn];
  80. [_effectSelectView addSubview:title];
  81. /*
  82. switch ((TXEffectType)btn.tag) {
  83. case TXEffectType_ROCK_LIGHT:
  84. {
  85. [btn setBackgroundColor:UIColorFromRGB(0xEC5F9B)];
  86. }
  87. break;
  88. case TXEffectType_DARK_DRAEM:
  89. {
  90. [btn setBackgroundColor:UIColorFromRGB(0xEC8435)];
  91. }
  92. break;
  93. case TXEffectType_SOUL_OUT:
  94. {
  95. [btn setBackgroundColor:UIColorFromRGB(0x1FBCB6)];
  96. }
  97. break;
  98. case TXEffectType_SCREEN_SPLIT:
  99. {
  100. [btn setBackgroundColor:UIColorFromRGB(0x449FF3)];
  101. }
  102. break;
  103. default:
  104. break;
  105. }
  106. */
  107. }
  108. }
  109. return self;
  110. }
  111. -(void)doDelEffectBtn {
  112. NSLog(@"del");
  113. [self.delegate onEffectSelDelete];
  114. }
  115. //响应事件
  116. -(void) beginPress: (UIButton *) button {
  117. if (_delEffectBtn.hidden == YES) {
  118. _delEffectBtn.hidden = NO;
  119. }
  120. TXEffectType type = (TXEffectType)button.tag;
  121. [self.delegate onVideoEffectBeginClick:type];
  122. }
  123. //响应事件
  124. -(void) endPress: (UIButton *) button {
  125. TXEffectType type = (TXEffectType)button.tag;
  126. [self.delegate onVideoEffectEndClick:type];
  127. }
  128. @end