//

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

最新文章

  1. Qt on Android 核心编程
  2. connect 链接失败: 查找不到 signal
  3. 从零开始学习Node.js例子九 设置HTTP头
  4. 尚学堂Spring视频教程(七):AOP XML
  5. 开心网的账号登录及api操作
  6. CentOS 7下关于systemd的一些唠叨话二:systemd服务脚本的编写
  7. centos更改默认语言
  8. chm文件右边部分查看不了
  9. 写一个函数,实现两个字符串的比较。即实现strcmp函数,s1=s2时返回0,s1!=s2时返回二者第一个不同字符的ASCII值。
  10. Mysql - 解决Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql&#39;问题
  11. 使用docker+consul+nginx集成分布式的服务发现与注册架构
  12. java平台学习笔记
  13. ECharts(中国地图)的使用 及 非空 tooltip formatter 验证
  14. Win10系列:JavaScript动画4
  15. Perl 杂记
  16. Javassist 字节码 语法 MD
  17. [转]NLP数据集
  18. 关于C3P0容错和自动重连特性的研究
  19. 66_Plus-One
  20. PHP ! 非运算符 与 if 判断深入研究

热门文章

  1. &#231;7—UIViewController
  2. [LUOGU] P4290 [BZOJ] 1055 [HAOI2008]玩具取名
  3. 配置github SSH公钥登录
  4. js 异步编程方案
  5. Sed命令基础操作
  6. springcloud了解
  7. 机器学习基础-Logistic回归2
  8. 【ZJOI2017 Round1练习】D2T2 iqtest(排列组合)
  9. 哀悼改变全站颜色为灰色CSS代码收藏
  10. SQL SERVER 2012 第五章 创建和修改数据表 の CREATE语句