WidgetFunctionView.m 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //
  2. // WidgetFunctionView.m
  3. // KulexiuForStudent
  4. //
  5. // Created by 王智 on 2022/9/13.
  6. //
  7. #import "WidgetFunctionView.h"
  8. @interface WidgetFunctionView ()
  9. @property (weak, nonatomic) IBOutlet UIButton *speedMinusButton;
  10. @property (weak, nonatomic) IBOutlet UIButton *speedAddButton;
  11. @property (weak, nonatomic) IBOutlet UISlider *volumeSlider;
  12. @end
  13. @implementation WidgetFunctionView
  14. - (void)awakeFromNib {
  15. [super awakeFromNib];
  16. [self.volumeSlider setThumbImage:[UIImage imageNamed:@"slider_image"] forState:UIControlStateNormal];
  17. [self.volumeSlider setThumbImage:[UIImage imageNamed:@"slider_image"] forState:UIControlStateFocused];
  18. }
  19. + (instancetype)shareInstance {
  20. WidgetFunctionView *view = [[[NSBundle mainBundle] loadNibNamed:@"WidgetFunctionView" owner:nil options:nil] firstObject];
  21. return view;
  22. }
  23. - (IBAction)changeVolumeAction:(UISlider *)sender {
  24. self.volumeRate = sender.value;
  25. if (self.delegate && [self.delegate respondsToSelector:@selector(volumeChange:)]) {
  26. [self.delegate volumeChange:sender.value];
  27. }
  28. }
  29. - (IBAction)changeBeatAction:(id)sender {
  30. if (self.delegate && [self.delegate respondsToSelector:@selector(clickChangeBeat)]) {
  31. [self.delegate clickChangeBeat];
  32. }
  33. }
  34. - (IBAction)onReduceButtonClick:(id)sender {
  35. if (self.speed > 50) {
  36. self.speed --;
  37. }else{
  38. self.speed = 50;
  39. }
  40. [self updateSpeed];
  41. }
  42. - (IBAction)onAddButtonClick:(id)sender {
  43. if (self.speed < 200) {
  44. self.speed ++;
  45. }else{
  46. self.speed = 200;
  47. }
  48. [self updateSpeed];
  49. }
  50. - (void)updateSpeed {
  51. if (self.delegate && [self.delegate respondsToSelector:@selector(clickChangeSpeed:)]) {
  52. [self.delegate clickChangeSpeed:self.speed];
  53. }
  54. }
  55. - (void)setCurrentMetronomeType:(KSWidgeMetronomeType)currentMetronomeType {
  56. _currentMetronomeType = currentMetronomeType;
  57. switch (currentMetronomeType) {
  58. case KSWidgeMetronomeType1V2:
  59. {
  60. [self.signatureButton setTitle:@"1/2" forState:UIControlStateNormal];
  61. }
  62. break;
  63. case KSWidgeMetronomeType2V2:
  64. {
  65. [self.signatureButton setTitle:@"2/2" forState:UIControlStateNormal];
  66. }
  67. break;
  68. case KSWidgeMetronomeType1V4:
  69. {
  70. [self.signatureButton setTitle:@"1/4" forState:UIControlStateNormal];
  71. }
  72. break;
  73. case KSWidgeMetronomeType2V4:
  74. {
  75. [self.signatureButton setTitle:@"2/4" forState:UIControlStateNormal];
  76. }
  77. break;
  78. case KSWidgeMetronomeType3V4:
  79. {
  80. [self.signatureButton setTitle:@"3/4" forState:UIControlStateNormal];
  81. }
  82. break;
  83. case KSWidgeMetronomeType4V4:
  84. {
  85. [self.signatureButton setTitle:@"4/4" forState:UIControlStateNormal];
  86. }
  87. break;
  88. case KSWidgeMetronomeType3V8:
  89. {
  90. [self.signatureButton setTitle:@"3/8" forState:UIControlStateNormal];
  91. }
  92. break;
  93. case KSWidgeMetronomeType6V8:
  94. {
  95. [self.signatureButton setTitle:@"6/8" forState:UIControlStateNormal];
  96. }
  97. break;
  98. case KSWidgeMetronomeType8V16:
  99. {
  100. [self.signatureButton setTitle:@"8/16" forState:UIControlStateNormal];
  101. }
  102. break;
  103. default:
  104. break;
  105. }
  106. }
  107. - (void)setVolumeRate:(CGFloat)volumeRate {
  108. _volumeRate = volumeRate;
  109. self.volumeSlider.value = volumeRate;
  110. }
  111. /*
  112. // Only override drawRect: if you perform custom drawing.
  113. // An empty implementation adversely affects performance during animation.
  114. - (void)drawRect:(CGRect)rect {
  115. // Drawing code
  116. }
  117. */
  118. @end