ToneTuningBodyView.m 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. //
  2. // ToneTuningBodyView.m
  3. // KulexiuForStudent
  4. //
  5. // Created by 王智 on 2022/10/14.
  6. //
  7. #import "ToneTuningBodyView.h"
  8. @interface ToneTuningBodyView ()
  9. @property (weak, nonatomic) IBOutlet UIView *minusView;
  10. @property (weak, nonatomic) IBOutlet UIButton *minusButton;
  11. @property (weak, nonatomic) IBOutlet UIView *addView;
  12. @property (weak, nonatomic) IBOutlet UIButton *addButton;
  13. @property (weak, nonatomic) IBOutlet UIButton *playButton;
  14. @property (weak, nonatomic) IBOutlet UILabel *distanceLabel;
  15. @property (nonatomic, copy) TuningActionCallback callback;
  16. @end
  17. @implementation ToneTuningBodyView
  18. - (void)awakeFromNib {
  19. [super awakeFromNib];
  20. CAGradientLayer *layer = [self createGradientLayerFromColor:HexRGB(0x323D50) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x1C2331) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, KPortraitWidth - 28, 170)];
  21. layer.cornerRadius = 11.0f;
  22. layer.masksToBounds = YES;
  23. [self.pitchBgView.layer addSublayer:layer];
  24. CAGradientLayer *minusLayer = [self createGradientLayerFromColor:HexRGB(0x3C495F) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x1C2331) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, 50, 31)];
  25. minusLayer.cornerRadius = 15.5f;
  26. minusLayer.masksToBounds = YES;
  27. [self.minusView.layer addSublayer:minusLayer];
  28. CAGradientLayer *addViewLayer = [self createGradientLayerFromColor:HexRGB(0x3C495F) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x1C2331) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, 50, 31)];
  29. addViewLayer.cornerRadius = 15.5f;
  30. addViewLayer.masksToBounds = YES;
  31. [self.addView.layer addSublayer:addViewLayer];
  32. self.transferView.hidden = YES;
  33. }
  34. + (instancetype)shareInstance {
  35. ToneTuningBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"ToneTuningBodyView" owner:nil options:nil] firstObject];
  36. return view;
  37. }
  38. - (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
  39. CAGradientLayer *gradientLayer = [CAGradientLayer layer];
  40. gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];
  41. gradientLayer.startPoint = startPoint;
  42. gradientLayer.endPoint = endPoint;
  43. gradientLayer.frame = bounds;
  44. gradientLayer.locations = @[@(0),@(1.0f)];
  45. return gradientLayer;
  46. }
  47. - (void)tuningViewAction:(TuningActionCallback)callback {
  48. if (callback) {
  49. self.callback = callback;
  50. }
  51. }
  52. - (IBAction)frequenceMinus:(id)sender {
  53. NSInteger frequence = self.A4Frequence;
  54. if (self.A4Frequence <= MINFREQUENCE) {
  55. return;
  56. }
  57. self.A4Frequence = frequence - 1;
  58. if (self.callback) {
  59. self.callback(TUNINGACTION_FREQUENCE, self.A4Frequence);
  60. }
  61. }
  62. - (IBAction)frequenceAdd:(id)sender {
  63. NSInteger frequence = self.A4Frequence;
  64. if (self.A4Frequence >= MAXFREQUENCE) {
  65. return;
  66. }
  67. self.A4Frequence = frequence + 1;
  68. if (self.callback) {
  69. self.callback(TUNINGACTION_FREQUENCE, self.A4Frequence);
  70. }
  71. }
  72. - (void)setA4Frequence:(NSInteger)A4Frequence {
  73. _A4Frequence = A4Frequence;
  74. self.A4FrequenceLabel.text = [NSString stringWithFormat:@"A4=%zdHz",A4Frequence];
  75. }
  76. - (IBAction)forkSetting:(id)sender {
  77. if (self.callback) {
  78. self.callback(TUNINGACTION_FORKSETTING, self.A4Frequence);
  79. }
  80. }
  81. - (IBAction)playButtonAction:(id)sender {
  82. self.isPlaying = !self.isPlaying;
  83. TUNINGACTION action = self.isPlaying ? TUNINGACTION_PLAY : TUNINGACTION_STOP;
  84. if (self.callback) {
  85. self.callback(action, self.A4Frequence);
  86. }
  87. }
  88. - (void)setIsPlaying:(BOOL)isPlaying {
  89. _isPlaying = isPlaying;
  90. NSString *playImage = isPlaying ? @"fork_play" : @"fork_unPlay";
  91. [self.playButton setImage:[UIImage imageNamed:playImage] forState:UIControlStateNormal];
  92. }
  93. - (void)setIsTransfer:(BOOL)isTransfer {
  94. _isTransfer = isTransfer;
  95. if (isTransfer) {
  96. self.nomalPitch.hidden = YES;
  97. self.transferView.hidden = NO;
  98. }
  99. else {
  100. self.nomalPitch.hidden = NO;
  101. self.transferView.hidden = YES;
  102. }
  103. }
  104. - (void)setDistance:(NSInteger)distance {
  105. _distance = distance;
  106. self.distanceLabel.text = [NSString stringWithFormat:@"%zd¢", distance];
  107. }
  108. /*
  109. // Only override drawRect: if you perform custom drawing.
  110. // An empty implementation adversely affects performance during animation.
  111. - (void)drawRect:(CGRect)rect {
  112. // Drawing code
  113. }
  114. */
  115. @end