啥也不说 ,直接撸代码最实惠。
其实主要是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