// // ASOrderListViewController.m // Asteria // // Created by iOS on 2024/5/13. // #import "ASOrderListViewController.h" #import "ASOrderListSubController.h" @interface ASOrderListViewController () @property (nonatomic, strong) NSArray *titles; @property (nonatomic, strong) NSArray *statuses; @property (nonatomic, strong) NSArray *topBtns; @property (nonatomic, strong) NSArray *views; @property (nonatomic, strong) NSArray *vcs; @property (nonatomic, strong) UIView *topBgV; @property (nonatomic, strong) UIScrollView *topScrollV; @property (nonatomic, strong) UIView *bottomBgV; @property (nonatomic, strong) UIScrollView *scrollV; @end @implementation ASOrderListViewController - (void)viewDidLoad { [super viewDidLoad]; self.titleStr = @"Orders"; [self setNavRightSearch:^{ }]; self.statusBgV.backgroundColor = Col_FFF; self.customNavBar.backgroundColor = Col_FFF; [self loadSubV]; } // MARK: - funcs - (void)getBaseData { self.titles = @[@"ALL", @"PENDING", @"PROCESSING", @"COMPLETE", @"CLOSED", @"CANCELED"]; self.statuses = @[@"all", @"pending", @"processing", @"complete", @"closed", @"canceled"]; NSMutableArray *vcs = [NSMutableArray array]; NSMutableArray *views = [NSMutableArray array]; NSMutableArray *btns = [NSMutableArray array]; for (int i=0; i= btns.count) { return; } UIButton *lastBt = btns[i-1]; make.leading.equalTo(lastBt.mas_trailing).offset(10); } if (i == self.titles.count-1) { make.trailing.equalTo(self.topScrollV.mas_trailing).offset(-10); } }]; IPhoneXHeigh; [bgV mas_makeConstraints:^(MASConstraintMaker *make) { make.width.equalTo(@(SCREEN_WIDTH)); make.height.equalTo(@(SCREEN_HEIGHT-kCustomNavBarH-StatusHeight-securityBottom_H-70)); make.top.bottom.equalTo(self.scrollV); if (i == 0) { make.leading.equalTo(self.scrollV); } else { if (i-1 >= views.count) { return; } UIView *lastv = views[i-1]; make.leading.equalTo(lastv.mas_trailing); } if (i == self.titles.count-1) { make.trailing.equalTo(self.scrollV); } }]; } self.vcs = vcs; self.views = views; self.topBtns = btns; if (self.defualtIndex < self.topBtns.count) { UIButton *bt = self.topBtns[self.defualtIndex]; [self topBtAction:bt]; } } // MARK: - actions - (void)topBtAction:(UIButton *)bt { NSInteger index = bt.tag - 10000; if (self.topBtns.count <= index) { return; } for (UIButton *tempBt in self.topBtns) { BOOL isSelect = tempBt.tag == bt.tag; tempBt.selected = isSelect; tempBt.backgroundColor = isSelect ? _113632 : Col_FFF; tempBt.titleLabel.font = [UIFont fontWithName:isSelect ? Rob_Bold : Rob_Regular size:12]; } [self.scrollV setContentOffset:CGPointMake(KScreenWidth*index, 0) animated:true]; if (self.vcs.count <= index || self.views.count <= index) { return; } ASOrderListSubController *tempVc = [self.vcs objectAtIndex:index]; UIView *v = self.views[index]; if (tempVc.view.superview == nil) { [v addSubview:tempVc.view]; [tempVc.view mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(v); }]; [tempVc didMoveToParentViewController:self]; } else { // 刷新子页面数据 [tempVc refreshListData]; } } - (void)loadSubV { [self.view addSubview:self.topBgV]; [self.view addSubview:self.bottomBgV]; [self.topBgV addSubview:self.topScrollV]; [self.bottomBgV addSubview:self.scrollV]; [self.topBgV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.customNavBar.mas_bottom); make.leading.trailing.equalTo(self.view); make.height.equalTo(@60); }]; [self.bottomBgV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.topBgV.mas_bottom); make.leading.trailing.bottom.equalTo(self.view); }]; [self.scrollV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.bottomBgV).offset(10); make.leading.trailing.bottom.equalTo(self.bottomBgV); }]; [self.topScrollV mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.topBgV); }]; [self getBaseData]; } // MARK: - subvs - (UIView *)getSubBgV { UIView *v = [UIView baseV]; v.backgroundColor = UIColor.clearColor; return v; } - (UIView *)topBgV { if (!_topBgV) { UIView *v = [UIView baseV]; v.backgroundColor = _F8F8F8; _topBgV = v; } return _topBgV; } - (UIView *)bottomBgV{ if (!_bottomBgV) { UIView *v = [UIView baseV]; v.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); v.backgroundColor = _F8F8F8; _bottomBgV = v; } return _bottomBgV; } - (UIButton *)getTopBt:(NSString *)title index:(NSInteger)index { UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom]; [bt addTarget:self action:@selector(topBtAction:) forControlEvents:UIControlEventTouchUpInside]; bt.tag = index + 10000; bt.backgroundColor = _113632; bt.titleLabel.font = [UIFont fontWithName:Rob_Bold size:12]; bt.layer.cornerRadius = 4; bt.layer.masksToBounds = true; [bt setTitleColor:Col_000 forState:UIControlStateNormal]; [bt setTitleColor:Col_FFF forState:UIControlStateSelected]; [bt setTitle:title forState:UIControlStateNormal]; return bt; } - (UIScrollView *)scrollV { if (!_scrollV) { UIScrollView *v = [[UIScrollView alloc] init]; v.showsVerticalScrollIndicator = false; v.showsHorizontalScrollIndicator = false; v.delegate = self; v.pagingEnabled = true; v.backgroundColor = UIColor.clearColor; v.alwaysBounceHorizontal = true; _scrollV = v; } return _scrollV; } - (UIScrollView *)topScrollV { if (!_topScrollV) { UIScrollView *v = [[UIScrollView alloc] init]; v.showsVerticalScrollIndicator = false; v.showsHorizontalScrollIndicator = false; v.backgroundColor = UIColor.clearColor; v.alwaysBounceHorizontal = true; _topScrollV = v; } return _topScrollV; } - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { NSInteger index = (NSInteger)(scrollView.contentOffset.x/SCREEN_WIDTH); if (self.topBtns.count <= index) { return; } UIButton *bt = self.topBtns[index]; [self topBtAction:bt]; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { NSInteger index = (NSInteger)(scrollView.contentOffset.x/SCREEN_WIDTH); if (self.topBtns.count <= index) { return; } UIButton *bt = self.topBtns[index]; [self topBtAction:bt]; } @end