123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- //
- // ASOrderListViewController.m
- // Asteria
- //
- // Created by iOS on 2024/5/13.
- //
- #import "ASOrderListViewController.h"
- #import "ASOrderListSubController.h"
- @interface ASOrderListViewController () <UIScrollViewDelegate>
- @property (nonatomic, strong) NSArray <NSString *>*titles;
- @property (nonatomic, strong) NSArray <NSString *>*statuses;
- @property (nonatomic, strong) NSArray <UIButton *>*topBtns;
- @property (nonatomic, strong) NSArray <UIView *>*views;
- @property (nonatomic, strong) NSArray <ASOrderListSubController *>*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<self.titles.count; i++) {
- if (self.titles.count <= i || self.statuses.count <= i) {
- return;
- }
- NSString *status = self.statuses[i];
- NSString *title = self.titles[i];
- ASOrderListSubController *vc = [[ASOrderListSubController alloc] init];
- vc.status = status;
- [self addChildViewController:vc];
- [vcs addObject:vc];
- UIView *bgV = [self getSubBgV];
- [views addObject:bgV];
- UIButton *bt = [self getTopBt:title index:i];
- [btns addObject:bt];
-
- [self.topScrollV addSubview:bt];
- [self.scrollV addSubview:bgV];
-
- CGRect titleRect = [title boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 18) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont fontWithName:Rob_Bold size:12]} context:nil];
- CGFloat titleW = titleRect.size.width + 30;
- if (titleW < 60) {
- titleW = 60;
- }
- [bt mas_makeConstraints:^(MASConstraintMaker *make) {
- make.width.equalTo(@(titleW));
- make.height.equalTo(@40);
- make.top.equalTo(@10);
- if (i == 0) {
- make.leading.equalTo(self.topScrollV.mas_leading).offset(10);
- } else {
- if (i-1 >= 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
|