少量View时的分段显示,滑动内容区域切换显示,多标题切换显示

啥也不说 ,直接撸代码最实惠。

其实主要是scrollview的应用,仅适用于少数View时候,数量较多时候不推荐,当前实现是每个标题创建对应的View。

#define selectedLineViewWidth ScreenWidth / 3. * 0.8

@interface ZRBOrderManagerViewController ()<UIScrollViewDelegate, ManagerOrderTableListViewDelegate>

@property (nonatomic, strong) PublishSearchButton *searchButton;
@property (nonatomic, strong) UIButton *navLeftBtn;


@property (nonatomic, strong) UIView *orderStatuView;

/**
 *  进行中
 */
@property (nonatomic, strong) UIButton *underwayOrdersBtn;
/**
 *  已完成
 */
@property (nonatomic, strong) UIButton *completedOrdersdBtn;
/**
 *  已取消
 */
@property (nonatomic, strong) UIButton *canceledOrdersBtn;

/**
 *  选中按钮下方的标记
 */
@property (nonatomic, strong) UIView *selectedLineView;

@property (nonatomic, strong) UIScrollView *mainScrollView;
@property (nonatomic, strong) NSMutableArray *viewContainers;

@end


@implementation ZRBOrderManagerViewController{

}

- (void)viewDidLoad {
    [super viewDidLoad];

    [self setupNoInterNavi];
    [self setupUI];
    [self setupViewLayout];
    [self addEvents];
    [self initWithViews];
}


- (void)setupNoInterNavi{
    [self setupNavigationBar];
    [self setupLineView];
    [self.titleBar addSubview:self.navLeftBtn];
    [self.titleBar addSubview:self.searchButton];

    self.lineView.alpha = 1;
    @weakify(self);
    [self.navLeftBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.centerY.equalTo(self.navigationView.mas_centerY);
        make.left.equalTo(self.navigationView.mas_left).offset(self.sizeW(12));
        make.width.equalTo(self.sizeW(30));
        make.height.equalTo(self.sizeH(30));
    }];

    [self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.centerY.equalTo(self.navigationView.mas_centerY);
        make.left.equalTo(self.navLeftBtn.mas_right).offset(self.sizeW(3));
        make.right.equalTo(self.navigationView.mas_right).offset(-self.sizeW(12));
        make.height.equalTo(self.sizeH(30));
    }];

    [[self.searchButton rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(id x) {
        @strongify(self);
        OrderManagerSearchController *vc = [[OrderManagerSearchController alloc]init];
        [self.navigationController pushViewController:vc animated:YES];
    }];
}


- (void)addEvents
{
    @weakify(self);

    [[self.underwayOrdersBtn rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(UIButton *sender) {
        @strongify(self);
        [self touchupInsideBtnWithBtnTag:sender.tag];
    }];

    [[self.completedOrdersdBtn rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(UIButton *sender) {
        @strongify(self);
        [self touchupInsideBtnWithBtnTag:sender.tag];
    }];

    [[self.canceledOrdersBtn rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(UIButton *sender) {
        @strongify(self);
        [self touchupInsideBtnWithBtnTag:sender.tag];
    }];

}


- (void)tableListViewdidSelectedOrder:(OrderModel *)order{
    OrderDetailViewController *vc = [[OrderDetailViewController alloc]init];
    vc.orderId = order.orderNum;
    vc.orderType = [order.currentOrderStatu integerValue];
    vc.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:vc animated:YES];
}

- (void)tableListViewHaveGotoCommentView:(OrderModel *)order{
    CommentBuyerController *vc = [[CommentBuyerController alloc]init];
    vc.CurrentOrderStatu = order.currentOrderStatu;
    vc.orderNum = order.orderNum;
    vc.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:vc animated:YES];
}

//点击上按钮时的统一处理
- (void)touchupInsideBtnWithBtnTag:(NSInteger )tag
{
    @weakify(self);
    [UIView animateWithDuration:0.3 animations:^{
        @strongify(self);
        [self.mainScrollView setContentOffset:CGPointMake(ScreenWidth * tag, 0)];
        [self scrollViewDidEndDecelerating:self.mainScrollView];
    } completion:^(BOOL finished) {

    }];
}



- (void)setupUI
{
    self.view.backgroundColor = [UIColor normalLineColor];
    [self.view addSubview:self.orderStatuView];
    [self.orderStatuView addSubview:self.underwayOrdersBtn];
    [self.orderStatuView addSubview:self.completedOrdersdBtn];
    [self.orderStatuView addSubview:self.canceledOrdersBtn];
    [self.orderStatuView addSubview:self.selectedLineView];

    [self.view addSubview:self.mainScrollView];
}

- (void)initWithViews
{
    NSArray *statusArray = @[@"1",@"2",@"3"];

    NSMutableArray *tableArr = [NSMutableArray array];
    for (int i = 0; i < statusArray.count; i++) {

        ManagerOrderTableListView *listTable = [[ManagerOrderTableListView alloc] initWithFrame:CGRectMake(ScreenWidth * i, 0, ScreenWidth,ScreenHeight - 64 - 41 - 48)];
        listTable.orderDataType = statusArray[i];
        listTable.delegate = self;
        [tableArr addObject:listTable];
        [listTable zrb_setupViews];
        [self.mainScrollView addSubview:listTable];
    }

    _viewContainers = [tableArr mutableCopy];
    self.mainScrollView.contentSize = CGSizeMake(ScreenWidth * statusArray.count, 0);
}


- (void)setupViewLayout
{
    [self.orderStatuView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(64);
        make.left.right.equalTo(self.view);
        make.height.equalTo(41);
    }];

    CGSize btnSize = CGSizeMake(ScreenWidth / 3, 38);
    [self.underwayOrdersBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.orderStatuView.mas_left);
        make.top.equalTo(self.orderStatuView.mas_top);
        make.size.equalTo(btnSize);
    }];

    [self.completedOrdersdBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.underwayOrdersBtn.mas_right).offset(0);
        make.centerY.equalTo(self.underwayOrdersBtn.mas_centerY);
        make.size.equalTo(btnSize);
    }];

    [self.canceledOrdersBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.completedOrdersdBtn.mas_right).offset(0);
        make.centerY.equalTo(self.underwayOrdersBtn.mas_centerY);
        make.size.equalTo(btnSize);
    }];

    [self.selectedLineView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.underwayOrdersBtn.mas_bottom);
        make.centerX.equalTo(self.underwayOrdersBtn.mas_centerX);
        make.size.equalTo(CGSizeMake(selectedLineViewWidth, 3));
    }];

    [self.mainScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.orderStatuView.mas_bottom);
        make.left.right.equalTo(self.view);
        make.bottom.mas_equalTo(-48);
    }];
}

#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSInteger count = scrollView.contentOffset.x / ScreenWidth;

    @weakify(self);
    switch (count) {
        case 0:
        {
            self.underwayOrdersBtn.selected = YES;
            self.completedOrdersdBtn.selected = NO;
            self.canceledOrdersBtn.selected = NO;

            [UIView animateWithDuration:0.3 animations:^{
                @strongify(self);
                [self.selectedLineView mas_remakeConstraints:^(MASConstraintMaker *make) {
                    @strongify(self);
                    make.centerX.equalTo(self.underwayOrdersBtn.mas_centerX);
                    make.size.equalTo(CGSizeMake(selectedLineViewWidth, 3));
                    make.top.equalTo(self.underwayOrdersBtn.mas_bottom);
                }];
            }];
        }
            break;

        case 1:
        {
            self.underwayOrdersBtn.selected = NO;
            self.completedOrdersdBtn.selected = YES;
            self.canceledOrdersBtn.selected = NO;

            [UIView animateWithDuration:0.3 animations:^{
                @strongify(self);
                [self.selectedLineView mas_remakeConstraints:^(MASConstraintMaker *make) {
                    @strongify(self);
                    make.centerX.equalTo(self.completedOrdersdBtn.mas_centerX);
                    make.size.equalTo(CGSizeMake(selectedLineViewWidth, 3));
                    make.top.equalTo(self.completedOrdersdBtn.mas_bottom);
                }];
            }];
        }
            break;

        case 2:
        {
            self.underwayOrdersBtn.selected = NO;
            self.completedOrdersdBtn.selected = NO;
            self.canceledOrdersBtn.selected = YES;

            [UIView animateWithDuration:0.3 animations:^{
                @strongify(self);
                [self.selectedLineView mas_remakeConstraints:^(MASConstraintMaker *make) {
                    @strongify(self);
                    make.centerX.equalTo(self.canceledOrdersBtn.mas_centerX);
                    make.size.equalTo(CGSizeMake(selectedLineViewWidth, 3));
                    make.top.equalTo(self.canceledOrdersBtn.mas_bottom);
                }];
            }];
        }
            break;
        default:
            break;
    }
}

#pragma mark - Lazy - ==================
- (UIView *)orderStatuView
{
    if (!_orderStatuView) {
        _orderStatuView = [UIView new];
        _orderStatuView.backgroundColor = [UIColor normalLineColor];
    }return _orderStatuView;
}

- (UIButton *)underwayOrdersBtn
{
    if (!_underwayOrdersBtn) {
        _underwayOrdersBtn = [UIButton buttonWithTitle:@"进行中" titleColor:[UIColor normalBlack] bgColor:White_Color highlightedColor:nil];
        _underwayOrdersBtn.tag = 0;
        [_underwayOrdersBtn setTitleColor:[UIColor colorWithHexString:@"FF6750"] forState:(UIControlStateSelected)];
        _underwayOrdersBtn.titleLabel.font = [UIFont systemFontOfSize:15];
    }return _underwayOrdersBtn;
}

- (UIButton *)completedOrdersdBtn
{
    if (!_completedOrdersdBtn) {
        _completedOrdersdBtn = [UIButton buttonWithTitle:@"已完成" titleColor:[UIColor normalBlack] bgColor:White_Color highlightedColor:nil];
        _completedOrdersdBtn.tag = 1;
        [_completedOrdersdBtn setTitleColor:[UIColor colorWithHexString:@"FF6750"] forState:(UIControlStateSelected)];
        _completedOrdersdBtn.titleLabel.font = [UIFont systemFontOfSize:15];
    }return _completedOrdersdBtn;
}

- (UIButton *)canceledOrdersBtn
{
    if (!_canceledOrdersBtn) {
        _canceledOrdersBtn = [UIButton buttonWithTitle:@"已取消" titleColor:[UIColor normalBlack] bgColor:White_Color highlightedColor:nil];
        _canceledOrdersBtn.tag = 2;
        [_canceledOrdersBtn setTitleColor:[UIColor colorWithHexString:@"FF6750"] forState:(UIControlStateSelected)];
        _canceledOrdersBtn.titleLabel.font = [UIFont systemFontOfSize:15];
    }return _canceledOrdersBtn;
}



- (UIView *)selectedLineView
{
    if (!_selectedLineView) {
        _selectedLineView = [UIView new];
        _selectedLineView.backgroundColor = [UIColor colorWithHexString:@"FF6750"];
    }return _selectedLineView;
}

- (UIScrollView *)mainScrollView
{
    if (!_mainScrollView) {
        _mainScrollView = [[UIScrollView alloc] init];
        _mainScrollView.delegate = self;
        _mainScrollView.pagingEnabled = YES;
        _mainScrollView.showsVerticalScrollIndicator = NO;
        _mainScrollView.backgroundColor = [UIColor whiteColor];
        _mainScrollView.showsHorizontalScrollIndicator = NO;
        _mainScrollView.bounces = NO;
    }return _mainScrollView;
}


#pragma mark - Lazy
- (UIButton *)navLeftBtn{
    if (!_navLeftBtn) {
        _navLeftBtn = [[UIButton alloc]initWithFrame:CGRectZero];
        [_navLeftBtn setImage:[UIImage imageNamed:@"order_nav_calendar"] forState:UIControlStateNormal];
    }
    return _navLeftBtn;
}

- (UIButton *)searchButton{
    if (!_searchButton) {
        self.searchButton = [PublishSearchButton buttonWithType:UIButtonTypeCustom];
        self.searchButton.backgroundColor = [UIColor colorWithHexString:@"DDDDDD"];
//        [self.searchButton setTitle:@"订单搜索" forState:UIControlStateNormal];
        [self.searchButton setImage:[UIImage imageNamed:@"icon_order_search"] forState:UIControlStateNormal];
//        self.searchButton.titleLabel.font = [UIFont systemFontOfSize:13];
        self.searchButton.layer.cornerRadius = 15;
        self.searchButton.layer.masksToBounds = YES;
    }
    return _searchButton;
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值