123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- //
- // ToneTuningBodyView.m
- // KulexiuForStudent
- //
- // Created by 王智 on 2022/10/14.
- //
- #import "ToneTuningBodyView.h"
- @interface ToneTuningBodyView ()
- @property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadingSpace;
- @property (weak, nonatomic) IBOutlet NSLayoutConstraint *plateWidth;
- @property (weak, nonatomic) IBOutlet NSLayoutConstraint *plateMidWidth;
- @property (weak, nonatomic) IBOutlet UIButton *playButton;
- @property (weak, nonatomic) IBOutlet UILabel *distanceLabel;
- @property (weak, nonatomic) IBOutlet UIImageView *rightImage;
- @property (nonatomic, copy) TuningActionCallback callback;
- @property (weak, nonatomic) IBOutlet NSLayoutConstraint *lineWidth;
- @property (weak, nonatomic) IBOutlet UIImageView *topImage;
- @end
- @implementation ToneTuningBodyView
- - (void)awakeFromNib {
- [super awakeFromNib];
- if (IS_IPAD) {
- CGFloat leftSpace = KPortraitWidth / 8.0f;
- self.leadingSpace.constant = leftSpace;
- CGFloat width = (KPortraitWidth - leftSpace * 2);
- self.plateWidth.constant = width / 4;
- self.plateMidWidth.constant = self.plateWidth.constant + 50;
- }
- }
- + (instancetype)shareInstance {
- ToneTuningBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"ToneTuningBodyView" owner:nil options:nil] firstObject];
- return view;
- }
- - (void)tuningViewAction:(TuningActionCallback)callback {
- if (callback) {
- self.callback = callback;
- }
- }
- - (IBAction)chooseMetronomeSpeed:(id)sender {
- if (self.callback) {
- self.callback(TUNINGACTION_METRONOME, self.A4Frequence);
- }
- }
- - (IBAction)chooseBeat:(id)sender {
- if (self.callback) {
- self.callback(TUNINGACTION_BEATCHOOSE, self.A4Frequence);
- }
- }
- - (IBAction)metroPlayAction:(id)sender {
- self.metronomePlayStatus = !self.metronomePlayStatus;
- TUNINGACTION action = self.metronomePlayStatus ? TUNINGACTION_BEATPLAY : TUNINGACTION_BEATSTOP;
- if (self.callback) {
- self.callback(action, self.A4Frequence);
- }
- }
- - (void)setA4Frequence:(NSInteger)A4Frequence {
- _A4Frequence = A4Frequence;
- self.A4FrequenceLabel.text = [NSString stringWithFormat:@"A4=%zdHz",A4Frequence];
- if (A4Frequence > 440) {
- self.warningImage.hidden = NO;
- }
- else {
- self.warningImage.hidden = YES;
- }
- }
- - (IBAction)forkSetting:(id)sender {
- if (self.callback) {
- self.callback(TUNINGACTION_FORKSETTING, self.A4Frequence);
- }
- }
- - (IBAction)playButtonAction:(id)sender {
- self.isPlaying = !self.isPlaying;
- TUNINGACTION action = self.isPlaying ? TUNINGACTION_PLAY : TUNINGACTION_STOP;
- if (self.callback) {
- self.callback(action, self.A4Frequence);
- }
- }
- - (void)setIsPlaying:(BOOL)isPlaying {
- _isPlaying = isPlaying;
- NSString *playImage = isPlaying ? @"fork_play" : @"fork_unPlay";
- [self.playButton setImage:[UIImage imageNamed:playImage] forState:UIControlStateNormal];
- }
- - (void)setIsTransfer:(BOOL)isTransfer {
- _isTransfer = isTransfer;
- if (isTransfer) {
- self.nomalPitch.hidden = YES;
- self.transferView.hidden = NO;
- }
- else {
- self.nomalPitch.hidden = NO;
- self.transferView.hidden = YES;
- }
- }
- - (void)setDistance:(NSInteger)distance {
- _distance = distance;
- self.distanceLabel.text = [NSString stringWithFormat:@"%zd¢", distance];
- }
- - (void)setFrequenceCorrect:(BOOL)frequenceCorrect {
- _frequenceCorrect = frequenceCorrect;
- if (frequenceCorrect) {
- self.rightImage.hidden = NO;
- self.distanceLabel.textColor = HexRGB(0xffffff);
- [self.topImage setImage:[UIImage imageNamed:@"plate_top_blue"]];
- }
- else {
- self.rightImage.hidden = YES;
- self.distanceLabel.textColor = HexRGB(0x333333);
- [self.topImage setImage:[UIImage imageNamed:@"plate_top"]];
- }
- }
- - (void)setRateFrequence:(CGFloat)rateFrequence {
- _rateFrequence = rateFrequence;
- [UIView animateWithDuration:0.8 animations:^{
- self.lineWidth.constant = (kScreenWidth - 50) * rateFrequence;
- } completion:^(BOOL finished) {
- }];
- }
- + (CGFloat)getViewHeight {
- CGFloat leftSpace = KPortraitWidth / 8.0f;
- CGFloat plateHeight = IS_IPAD ? (KPortraitWidth - leftSpace * 2) / 2 : KPortraitWidth / 2;
- return plateHeight + 64 + 36 + 32 + 6 + 145 + 3 + 2 + 84 + 3 + 11 + 72 + 29+ 20;
- }
- - (void)setMetronomePlayStatus:(BOOL)metronomePlayStatus {
- _metronomePlayStatus = metronomePlayStatus;
- if (metronomePlayStatus) {
- [self.metronomeStatus setImage:[UIImage imageNamed:@"tuning_metronome_stop"]];
- }
- else {
- [self.metronomeStatus setImage:[UIImage imageNamed:@"tuning_metronome_play"]];
- }
- }
- /*
- // Only override drawRect: if you perform custom drawing.
- // An empty implementation adversely affects performance during animation.
- - (void)drawRect:(CGRect)rect {
- // Drawing code
- }
- */
- @end
|