//
VTMagic的使用
// CFOrderViewController.m
// qifuyuniOS
////
/**
* @author 李洪强, 16-08-30 10:08:50
*
* 原生开发
*/
#import "CFOrderViewController.h"
#import "ZZChatViewController.h"
#import "CFCommodityController.h"
#import "WXApi.h"
#import "AppDelegate.h"
#import "VTMagic.h"
//待支付
#import "CFtobePaidTableCtrl.h"
//代发货
#import "CFtoBeShippedTableCtrl.h"
//待收货
#import "CFreceiptOfGoodsTabelCtrl.h"
//我的订单
#import "CFmyOrderTabelCtrl.h"
//
@interface CFOrderViewController ()<UIAlertViewDelegate,UIScrollViewDelegate,VTMagicViewDataSource,VTMagicViewDelegate>
@property(nonatomic,retain) VTMagicController *magicController;
//******************************************
/**
* @author 李洪强, 16-08-30 10:08:50
*
* 原生开发
*/
/** 横线View1 */
@property (weak, nonatomic) IBOutlet UIView *orangeView1;
/** 横线View2 */
@property (weak, nonatomic) IBOutlet UIView *orangeView2;
/** 横线View3 */
@property (weak, nonatomic) IBOutlet UIView *orangeView3;
/** 横线View4 */
@property (weak, nonatomic) IBOutlet UIView *orangeView4;
/** 存放顶部所有标题的View */
//@property (weak, nonatomic) IBOutlet UIView *titlesView;
/** 存放所有内容的scrollView */
@property (weak, nonatomic) IBOutlet UIScrollView *contentsScrollView;
/** 待支付*/
//To be paid
@property (weak, nonatomic) IBOutlet UIButton *tobePaidBtn;
/** 待发货*/
//toBeShipped
@property (weak, nonatomic) IBOutlet UIButton *toBeShippedBtn;
/** 待收货*/
//receiptOfGoods
@property (weak, nonatomic) IBOutlet UIButton *receiptOfGoodsBtn;
/**我的订单*/
//myOrder
@property (weak, nonatomic) IBOutlet UIButton *myOrderBtn;
/** 标签栏底部的红色指示器 */
@property (nonatomic, weak) UIView *indicatorView;
/** 当前选中的按钮 */
@property (nonatomic, weak) UIButton *selectedButton;
/** 顶部的按钮 */
@property (nonatomic, weak) UIButton *Button1;
/** 顶部的所有标签 */
@property (nonatomic, weak) UIView *titlesView;
/** 底部的所有内容 */
@property (nonatomic, weak) UIScrollView *contentView;
//cookie
@property(nonatomic,strong)NSDictionary *userInfo;
@property(nonatomic,copy)NSString * phoneNo;
@end
@implementation CFOrderViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[_magicController.view setFrame:CGRectMake(0, 0, CFScreenW, self.view.height-50)];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationItem.title = @"我的订单";
// 设置导航栏
// [self setupNav];
// // 01 - 初始化子控制器
// [self setupChildVces];
//
// // 02 - 设置顶部的标签栏
// [self setupTitlesView];
//
// // 03 - 底部的scrollView
// [self setupContentView];
//
// //设置控制器为UIScrollView的代理
// self.contentView.delegate = self;
/*****fix****/
[self initView];
}
#pragma mark 初始化View
-(void)initView
{
[self addChildViewController:self.magicController];
[self.view addSubview:_magicController.view];
[_magicController.magicView reloadData];
}
- (NSArray<NSString *> *)menuTitlesForMagicView:(VTMagicView *)magicView {
return @[@"待支付",@"待发货",@"待收货",@"我的订单"];
}
- (UIButton *)magicView:(VTMagicView *)magicView menuItemAtIndex:(NSUInteger)itemIndex {
static NSString *itemIdentifier = @"itemIdentifier";
UIButton *menuItem = [magicView dequeueReusableItemWithIdentifier:itemIdentifier];
if (!menuItem) {
menuItem = [UIButton buttonWithType:UIButtonTypeCustom];
[menuItem setTitleColor:RGBCOLOR(0, 0, 0) forState:UIControlStateNormal];
[menuItem setTitleColor:[UIColor colorWithHex:@"FE6F07"] forState:UIControlStateSelected];
menuItem.titleLabel.font = [UIFont fontWithName:@"Helvetica" size:16.f];
}
return menuItem;
}
- (UIViewController *)magicView:(VTMagicView *)magicView viewControllerAtPage:(NSUInteger)pageIndex {
switch (pageIndex) {
case 0:
{
static NSString *bookmarkId = @"CFtobePaidTableCtrl.identifier";
CFtobePaidTableCtrl *cr = [magicView dequeueReusablePageWithIdentifier:bookmarkId];
if (!cr)
cr = [CFtobePaidTableCtrl new];
return cr;
}
break;
case 1:
{
static NSString *bookmarkId = @"CFtoBeShippedTableCtrl.identifier";
CFtoBeShippedTableCtrl *cr = [magicView dequeueReusablePageWithIdentifier:bookmarkId];
if (!cr)
cr = [CFtoBeShippedTableCtrl new];
return cr;
}
break;
case 2:
{
static NSString *bookmarkId = @"CFreceiptOfGoodsTabelCtrl.identifier";
CFreceiptOfGoodsTabelCtrl *cr = [magicView dequeueReusablePageWithIdentifier:bookmarkId];
if (!cr)
cr = [CFreceiptOfGoodsTabelCtrl new];
return cr;
}
break;
case 3:
{
static NSString *bookmarkId = @"CFmyOrderTabelCtrl.identifier";
CFmyOrderTabelCtrl *cr = [magicView dequeueReusablePageWithIdentifier:bookmarkId];
if (!cr)
cr = [CFmyOrderTabelCtrl new];
return cr;
}
break;
default:
break;
}
return nil;
}
- (VTMagicController *)magicController {
if (!_magicController) {
_magicController = [[VTMagicController alloc] init];
_magicController.magicView.navigationColor = [UIColor whiteColor];
_magicController.magicView.sliderColor = [UIColor colorWithHex:@"FE6F07"];
_magicController.magicView.layoutStyle = VTLayoutStyleDivide;
_magicController.magicView.switchStyle = VTSwitchStyleDefault;
_magicController.magicView.navigationHeight = 40.f;
_magicController.magicView.dataSource = self;
_magicController.magicView.delegate = self;
}
return _magicController;
}
/**01 添加子控制器*/
- (void)setupChildVces{
//待支付
CFtobePaidTableCtrl *toBePaidCtrl = [[CFtobePaidTableCtrl alloc]initWithNibName:@"CFtobePaidTableCtrl" bundle:nil];
[toBePaidCtrl.view setFrame:CGRectMake(0, 0, CFScreenW, CFScreenH)];
//toBePaidCtrl.view.backgroundColor = [UIColor colorWithRed:0.300 green:0.198 blue:1.000 alpha:1.000];
toBePaidCtrl.title = @"待支付";
[self addChildViewController:toBePaidCtrl];
//代发货
//#import "CFtoBeShippedTableCtrl.h"
CFtoBeShippedTableCtrl *toBeShippedCtrl = [[CFtoBeShippedTableCtrl alloc]init];
// toBeShippedCtrl.view.backgroundColor = [UIColor colorWithRed:1.000 green:0.893 blue:0.387 alpha:1.000];
toBeShippedCtrl.title = @"待发货";
[self addChildViewController:toBeShippedCtrl];
//待收货
//#import "CFreceiptOfGoodsTabelCtrl.h"
CFreceiptOfGoodsTabelCtrl *receiptOfGoodsCtrl = [[CFreceiptOfGoodsTabelCtrl alloc]init];
// receiptOfGoodsCtrl.view.backgroundColor = [UIColor colorWithRed:1.000 green:0.118 blue:0.783 alpha:1.000];
receiptOfGoodsCtrl.title = @"待收货";
[self addChildViewController:receiptOfGoodsCtrl];
//我的订单
//#import "CFmyOrderTabelCtrl.h"
CFmyOrderTabelCtrl *myOrderCtrl = [[CFmyOrderTabelCtrl alloc]init];
//myOrderCtrl.view.backgroundColor = [UIColor colorWithRed:1.000 green:0.160 blue:0.108 alpha:1.000];
myOrderCtrl.title = @"我的订单";
[self addChildViewController:myOrderCtrl];
// NSLog(@"子控制器有: %@",self.childViewControllers);
}
/**
* @author 李洪强, 16-08-30 16:08:10
*
* **02 - 设置顶部的标签栏*/
- (void)setupTitlesView{
// 标签栏整体
UIView *titlesView = [[UIView alloc] init];
titlesView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.7];
titlesView.width = self.view.width;
titlesView.height = CFTitlesViewH;
titlesView.y = 0;
[self.view addSubview:titlesView];
self.titlesView = titlesView;
// 底部的橙色指示器
UIView *indicatorView = [[UIView alloc] init];
indicatorView.backgroundColor = [UIColor orangeColor];
indicatorView.height = 2;
indicatorView.tag = -1;
indicatorView.y = titlesView.height - indicatorView.height;
self.indicatorView = indicatorView;
// 内部的子标签
CGFloat width = titlesView.width / self.childViewControllers.count;
CGFloat height = titlesView.height;
for (NSInteger i = 0; i<self.childViewControllers.count; i++) {
UIButton *button = [[UIButton alloc] init];
button.tag = i;
button.height = height;
button.width = width;
button.x = i * width;
UIViewController * vc = self.childViewControllers[i];
[button setTitle:vc.title forState:UIControlStateNormal];
// [button layoutIfNeeded]; // 强制布局(强制更新子控件的frame)
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor orangeColor] forState:UIControlStateDisabled];
button.titleLabel.font = [UIFont systemFontOfSize:14];
[button addTarget:self action:@selector(titleClick:) forControlEvents:UIControlEventTouchUpInside];
[titlesView addSubview:button];
// 默认点击了第一个按钮
if (i == 0) {
button.enabled = NO;
self.selectedButton = button;
// 让按钮内部的label根据文字内容来计算尺寸
[button.titleLabel sizeToFit];
self.indicatorView.width = button.width;
self.indicatorView.centerX = button.centerX;
}
}
[titlesView addSubview:indicatorView];
/**
李洪强-2016-8-31
添加顶部标题栏的竖线*/
CGFloat lineW = 1;
CGFloat lineH = 20;
for(NSInteger i = 0; i < 3; i++){
UIView *lineView = [[UIView alloc]init];
lineView.backgroundColor = [UIColor colorWithWhite:0.845 alpha:1.000];
lineView.x = i*self.selectedButton.width + self.selectedButton.width;
lineView.y = 12;
lineView.frame = CGRectMake(lineView.x, lineView.y, lineW, lineH);
[self.titlesView addSubview:lineView];
}
}
- (void)titleClick:(UIButton *)button
{
// 修改按钮状态
self.selectedButton.enabled = YES;
button.enabled = NO;
self.selectedButton = button;
// 动画
[UIView animateWithDuration:0.25 animations:^{
self.indicatorView.width = button.width;
self.indicatorView.centerX = button.centerX;
}];
// 滚动
CGPoint offset = self.contentView.contentOffset;
offset.x = button.tag * self.contentView.width;
[self.contentView setContentOffset:offset animated:YES];
}
// 03 - 底部的scrollView
- (void)setupContentView{
// 不要自动调整inset
self.automaticallyAdjustsScrollViewInsets = NO;
UIScrollView *contentView = [[UIScrollView alloc] init];
// contentView.frame = self.view.bounds;
contentView.frame = CGRectMake(self.view.x, 40, CFScreenW, CFScreenH - 150);
contentView.delegate = self;
contentView.pagingEnabled = YES;
[self.view insertSubview:contentView atIndex:0];
contentView.contentSize = CGSizeMake(contentView.width * self.childViewControllers.count, 0);
self.contentView = contentView;
// 添加第一个控制器的view
[self scrollViewDidEndScrollingAnimation:contentView];
}
//1 待支付
- (IBAction)toBePaid:(id)sender {
NSLog(@"点击了待支付按钮");
self.orangeView1.hidden = NO;
self.orangeView2.hidden = YES;
self.orangeView3.hidden = YES;
self.orangeView4.hidden = YES;
CGFloat offsetX = 0 * self.contentsScrollView.frame.size.width;
CGPoint offset = CGPointMake(offsetX, self.contentsScrollView.contentOffset.y);
// 设置偏移量
[self.contentsScrollView setContentOffset:offset animated:YES];
self.tobePaidBtn.selected = YES;
self.toBeShippedBtn.selected = NO;
self.receiptOfGoodsBtn.selected = NO;
self.myOrderBtn.selected = NO;
}
/** 2待发货*/
//toBeShipped
- (IBAction)toBeShipped:(id)sender {
NSLog(@"点击了代发货");
self.orangeView1.hidden = YES;
self.orangeView2.hidden = NO;
self.orangeView3.hidden = YES;
self.orangeView4.hidden = YES;
CGFloat offsetX = 1 * self.contentsScrollView.frame.size.width;
CGPoint offset = CGPointMake(offsetX, self.contentsScrollView.contentOffset.y);
// 设置偏移量
[self.contentsScrollView setContentOffset:offset animated:YES];
self.tobePaidBtn.selected = NO;
self.toBeShippedBtn.selected = YES;
self.receiptOfGoodsBtn.selected = NO;
self.myOrderBtn.selected = NO;
}
/** 3待收货*/
//receiptOfGoods
- (IBAction)receiptOfGoods:(id)sender {
NSLog(@"点击了待收货按钮");
self.orangeView1.hidden = YES;
self.orangeView2.hidden = YES;
self.orangeView3.hidden = NO;
self.orangeView4.hidden = YES;
self.tobePaidBtn.selected = NO;
self.toBeShippedBtn.selected = NO;
self.receiptOfGoodsBtn.selected = YES;
self.myOrderBtn.selected = NO;
CGFloat offsetX = 2 * self.contentsScrollView.frame.size.width;
CGPoint offset = CGPointMake(offsetX, self.contentsScrollView.contentOffset.y);
// 设置偏移量
[self.contentsScrollView setContentOffset:offset animated:YES];
}
/*4*我的订单*/
//myOrder
- (IBAction)myOrder:(id)sender {
NSLog(@"点击了我的订单按钮");
self.orangeView1.hidden = YES;
self.orangeView2.hidden = YES;
self.orangeView3.hidden = YES;
self.orangeView4.hidden = NO;
CGFloat offsetX = 3 * self.contentsScrollView.frame.size.width;
CGPoint offset = CGPointMake(offsetX, self.contentsScrollView.contentOffset.y);
// 设置偏移量
[self.contentsScrollView setContentOffset:offset animated:YES];
self.tobePaidBtn.selected = NO;
self.toBeShippedBtn.selected = NO;
self.receiptOfGoodsBtn.selected = NO;
self.myOrderBtn.selected = YES;
}
#pragma mark - <UIScrollViewDelegate> Scrollview的代理方法
/**
* 在scrollView动画结束时调用(添加子控制器的view到self.contentsScrollView)
* self.contentsScrollView == scrollView
* 用户手动触发的动画结束,不会调用这个方法
*/
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
// 当前的索引
NSInteger index = scrollView.contentOffset.x / scrollView.width;
// 取出子控制器
UIViewController *vc = self.childViewControllers[index];
vc.view.x = scrollView.contentOffset.x;
vc.view.y = 0; // 设置控制器view的y值为0(默认是20)
vc.view.height = scrollView.height; // 设置控制器view的height值为整个屏幕的高度(默认是比屏幕高度少个20)
[scrollView addSubview:vc.view];
}
/**
* 当scrollView停止滚动时调用这个方法(用户手动触发的动画停止,会调用这个方法)
*/
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[self scrollViewDidEndScrollingAnimation:scrollView];
// 点击按钮
NSInteger index = scrollView.contentOffset.x / scrollView.width;
[self titleClick:self.titlesView.subviews[index]];
}
- (void)dealloc
{
}
/**
* SVProgressHUD 消失方法
*
* @return
*/
- (void)dismiss{
[SVProgressHUD dismiss];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1) {
NSString * str = [NSString stringWithFormat:@"telprompt://%@",self.phoneNo];
NSURL * url = [NSURL URLWithString:str];
[[UIApplication sharedApplication] openURL:url];
}
}
@end