123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- //
- // HomeArrangeRankView.m
- // KulexiuForStudent
- //
- // Created by 王智 on 2024/11/19.
- //
- #import "HomeArrangeRankView.h"
- #import "ArrangeRecentRankButtonView.h"
- #import "HomeArrangeRankButtonView.h"
- typedef NS_ENUM(NSInteger, RANK_BUTTON_TYPE) {
- RANK_BUTTON_TYPE_FINISH,
- RANK_BUTTON_TYPE_PRICE,
- RANK_BUTTON_TYPE_SCORE,
- };
- #define ARR_LEFT_SPACE (14)
- #define ARR_BUTTON_SPACE (10)
- @interface HomeArrangeRankView ()
- @property (weak, nonatomic) IBOutlet UIView *buttonContainer;
- @property (nonatomic, strong) ArrangeRecentRankButtonView *recentButton;
- @property (nonatomic, strong) HomeArrangeRankButtonView *finishButton;
- @property (nonatomic, strong) HomeArrangeRankButtonView *priceButton;
- @property (nonatomic, strong) HomeArrangeRankButtonView *scoreButton;
- @property (nonatomic, copy) ArrangeRankCallback callback;
- @property (nonatomic, strong) NSString *sortField;
- @property (nonatomic, strong) NSString *sortRule;
- @property (nonatomic, assign) BOOL isRecentFree;
- @end
- @implementation HomeArrangeRankView
- + (instancetype)sharedInstance {
- HomeArrangeRankView *view = [[[NSBundle mainBundle] loadNibNamed:@"HomeArrangeRankView" owner:nil options:nil] firstObject];
- return view;
- }
- - (void)configUI {
- // CGFloat phoneSpace = (KPortraitWidth - 111 - 74 * 2 - 58 - ARR_LEFT_SPACE * 2) / 3.0f;
- // CGFloat space = IS_IPAD ? ARR_BUTTON_SPACE : phoneSpace;
- CGFloat space = ARR_BUTTON_SPACE;
- [self.buttonContainer addSubview:self.recentButton];
- [self.recentButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.buttonContainer.mas_left).offset(ARR_LEFT_SPACE);
- make.top.bottom.mas_equalTo(self.buttonContainer);
- make.width.mas_equalTo(111.0f);
- }];
-
- [self.buttonContainer addSubview:self.finishButton];
- [self.finishButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.recentButton.mas_right).offset(space);
- make.top.bottom.mas_equalTo(self.buttonContainer);
- make.width.mas_equalTo(74.0f);
- }];
- if (self.hidePriceSort == NO) {
- [self.buttonContainer addSubview:self.priceButton];
- [self.priceButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.finishButton.mas_right).offset(space);
- make.top.bottom.mas_equalTo(self.buttonContainer);
- make.width.mas_equalTo(74.0f);
- }];
- [self.buttonContainer addSubview:self.scoreButton];
- [self.scoreButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.priceButton.mas_right).offset(space);
- make.top.bottom.mas_equalTo(self.buttonContainer);
- make.width.mas_equalTo(58.0f);
- }];
- }
- else {
- [self.buttonContainer addSubview:self.scoreButton];
- [self.scoreButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.finishButton.mas_right).offset(space);
- make.top.bottom.mas_equalTo(self.buttonContainer);
- make.width.mas_equalTo(58.0f);
- }];
- }
- }
- - (void)sortAction:(ArrangeRankCallback)callback {
- if (callback) {
- self.callback = callback;
- }
- }
- + (CGFloat)getViewHeight {
- return 40.0f;
- }
- - (ArrangeRecentRankButtonView *)recentButton {
- if (!_recentButton) {
- _recentButton = [ArrangeRecentRankButtonView sharedInstance];
- MJWeakSelf;
- [_recentButton settingCallback:^(BOOL isChoose) {
- [weakSelf recentButtonAction:isChoose];
- }];
- }
- return _recentButton;
- }
- - (HomeArrangeRankButtonView *)finishButton {
- if (!_finishButton) {
- _finishButton = [HomeArrangeRankButtonView sharedInstance];
- MJWeakSelf;
- [_finishButton configWithTitle:@"已上课时" callback:^(RANKTYPE type) {
- [weakSelf rankAction:type buttonType:RANK_BUTTON_TYPE_FINISH];
- }];
- }
- return _finishButton;
- }
- - (HomeArrangeRankButtonView *)priceButton {
- if (!_priceButton) {
- _priceButton = [HomeArrangeRankButtonView sharedInstance];
- MJWeakSelf;
- [_priceButton configWithTitle:@"课时单价" callback:^(RANKTYPE type) {
- [weakSelf rankAction:type buttonType:RANK_BUTTON_TYPE_PRICE];
- }];
- }
- return _priceButton;
- }
- - (HomeArrangeRankButtonView *)scoreButton {
- if (!_scoreButton) {
- _scoreButton = [HomeArrangeRankButtonView sharedInstance];
- MJWeakSelf;
- [_scoreButton configWithTitle:@"评分" callback:^(RANKTYPE type) {
- [weakSelf rankAction:type buttonType:RANK_BUTTON_TYPE_SCORE];
- }];
- }
- return _scoreButton;
- }
- - (void)rankAction:(RANKTYPE)type buttonType:(RANK_BUTTON_TYPE)buttonType {
-
- switch (buttonType) {
- case RANK_BUTTON_TYPE_FINISH:
- {
- self.priceButton.status = RANKTYPE_NONE;
- self.scoreButton.status = RANKTYPE_NONE;
- if (type == RANKTYPE_NONE) {
- self.sortRule = nil;
- self.sortField = nil;
- }
- else if (type == RANKTYPE_UP) {
- self.sortRule = @"ASC";
- self.sortField = @"expTime";
- }
- else {
- self.sortRule = @"DESC";
- self.sortField = @"expTime";
- }
- }
- break;
- case RANK_BUTTON_TYPE_PRICE:
- {
- self.finishButton.status = RANKTYPE_NONE;
- self.scoreButton.status = RANKTYPE_NONE;
- if (type == RANKTYPE_NONE) {
- self.sortRule = nil;
- self.sortField = nil;
- }
- else if (type == RANKTYPE_UP) {
- self.sortRule = @"ASC";
- self.sortField = @"subjectPrice";
- }
- else {
- self.sortRule = @"DESC";
- self.sortField = @"subjectPrice";
- }
- }
- break;
- case RANK_BUTTON_TYPE_SCORE:
- {
- self.finishButton.status = RANKTYPE_NONE;
- self.priceButton.status = RANKTYPE_NONE;
- if (type == RANKTYPE_NONE) {
- self.sortRule = nil;
- self.sortField = nil;
- }
- else if (type == RANKTYPE_UP) {
- self.sortRule = @"ASC";
- self.sortField = @"starGrade";
- }
- else {
- self.sortRule = @"DESC";
- self.sortField = @"starGrade";
- }
- }
- break;
- default:
- break;
- }
- if (self.callback) {
- self.callback(self.isRecentFree, self.sortField, self.sortRule);
- }
- }
- - (void)recentButtonAction:(BOOL)isChoose {
- self.isRecentFree = !self.isRecentFree;
- if (self.callback) {
- self.callback(self.isRecentFree, self.sortField, self.sortRule);
- }
- }
- /*
- // Only override drawRect: if you perform custom drawing.
- // An empty implementation adversely affects performance during animation.
- - (void)drawRect:(CGRect)rect {
- // Drawing code
- }
- */
- @end
|