zoukankan      html  css  js  c++  java
  • VTMagic的使用

    //

     

    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,retainVTMagicController  *magicController;

    //******************************************

    /**

     *  @author 李洪强, 16-08-30 10:08:50

     *

     *  原生开发

     */

     

     

    /** 横线View1 */

    @property (weaknonatomicIBOutlet UIView *orangeView1;

    /** 横线View2 */

    @property (weaknonatomicIBOutlet UIView *orangeView2;

    /** 横线View3 */

    @property (weaknonatomicIBOutlet UIView *orangeView3;

    /** 横线View4 */

    @property (weaknonatomicIBOutlet UIView *orangeView4;

     

    /** 存放顶部所有标题的View */

    //@property (weak, nonatomic) IBOutlet UIView *titlesView;

     

    /** 存放所有内容的scrollView */

    @property (weaknonatomicIBOutlet UIScrollView *contentsScrollView;

     

    /** 待支付*/

    //To be paid

    @property (weaknonatomicIBOutlet UIButton *tobePaidBtn;

     

    /** 待发货*/

    //toBeShipped

    @property (weaknonatomicIBOutlet UIButton *toBeShippedBtn;

     

    /** 待收货*/

    //receiptOfGoods

    @property (weaknonatomicIBOutlet UIButton *receiptOfGoodsBtn;

     

     

    /**我的订单*/

    //myOrder

    @property (weaknonatomicIBOutlet UIButton *myOrderBtn;

     

     

    /** 标签栏底部的红色指示器 */

    @property (nonatomicweakUIView *indicatorView;

    /** 当前选中的按钮 */

    @property (nonatomicweakUIButton *selectedButton;

     

    /** 顶部的按钮 */

    @property (nonatomicweakUIButton *Button1;

    /** 顶部的所有标签 */

    @property (nonatomicweakUIView *titlesView;

     

    /** 底部的所有内容 */

    @property (nonatomicweakUIScrollView *contentView;

     

     

    //cookie

    @property(nonatomic,strong)NSDictionary *userInfo;

     

    @property(nonatomic,copy)NSString * phoneNo;

    @end

     

    @implementation CFOrderViewController

     

    - (void)viewWillAppear:(BOOL)animated {

        [super viewWillAppear:animated];

        [[UIApplication sharedApplicationsetStatusBarStyle:UIStatusBarStyleDefault];

    }

     

    -(void)viewDidAppear:(BOOL)animated

    {

        [super viewDidAppear:animated];

        [_magicController.view setFrame:CGRectMake(00CFScreenWself.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(000forState: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 allocinit];

            _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(00CFScreenWCFScreenH)];

        //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 allocinit];

        titlesView.backgroundColor = [[UIColor whiteColorcolorWithAlphaComponent:0.7];

        titlesView.width = self.view.width;

        titlesView.height = CFTitlesViewH;

        titlesView.y = 0;

        [self.view addSubview:titlesView];

        self.titlesView = titlesView;

        

        

        

        // 底部的橙色指示器

        UIView *indicatorView = [[UIView allocinit];

        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 allocinit];

            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 blackColorforState:UIControlStateNormal];

            [button setTitleColor:[UIColor orangeColorforState: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 allocinit];

       // contentView.frame = self.view.bounds;

        contentView.frame = CGRectMake(self.view.x40CFScreenWCFScreenH - 150);

        contentView.delegate = self;

        contentView.pagingEnabled = YES;

        [self.view insertSubview:contentView atIndex:0];

        contentView.contentSize = CGSizeMake(contentView.width * self.childViewControllers.count0);

        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动画结束时调用(添加子控制器的viewself.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// 设置控制器viewy值为0(默认是20)

        vc.view.height = scrollView.height// 设置控制器viewheight值为整个屏幕的高度(默认是比屏幕高度少个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 sharedApplicationopenURL:url];

        }

    }

     

     

    @end

  • 相关阅读:
    [C++]多源最短路径(带权有向图):【Floyd算法(动态规划法)】 VS n*Dijkstra算法(贪心算法)
    [C++]Yellow Cards
    [C++]哈夫曼树(最优满二叉树) / 哈夫曼编码(贪心算法)
    考研部分复习策略记录
    [C++/JavaScript]数据结构:栈和数列>案例引入(数制的转换)
    [C++]数据结构:线性表之(单)链表
    [C++]数据结构:线性表之顺序表
    自然语言处理(NLP)之个人小结
    NLP之TF-IDF与BM25原理探究
    [Python]Excel编程示例教程(openpyxl)
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5861749.html
Copyright © 2011-2022 走看看