VTMagic 1.2.4

VTMagic 1.2.4

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最新发布2016年8月

VictorTian 维护。



VTMagic 1.2.4

  • 作者:
  • tianzhuo

VTMagic 是一个适用于 iOS 的页面容器库,如果您需要,可以自定义不同的识别符来自定义每个页面控制器。它非常易于使用!(中文手册链接

变更日志(变更日志)

preview image

沟通

  • 如果您 发现了一个错误,并且可以提供可靠的复现步骤,请提出一个 issue。
  • 如果您 有一个功能请求,请提出一个 issue。
  • 如果您 想要贡献,请提交一个 pull request。

安装

手动

  1. 下载项目并将 VTMagic 文件夹拖到您的项目中。
  2. 导入文件 VTMagic.h
#import "VTMagic.h"

要求

此库需要 iOS 6.0+ 和 Xcode 7.0+。

用法

要运行示例项目,首先从仓库克隆项目,然后从项目目录运行 pod install

集成

- (void)viewDidLoad {
    [super viewDidLoad];

    [self addChildViewController:self.magicController];
    [self.view addSubview:_magicController.view];

    [_magicController.magicView reloadData];
}

- (VTMagicController *)magicController {
    if (!_magicController) {
        _magicController = [[VTMagicController alloc] init];
        _magicController.magicView.navigationColor = [UIColor whiteColor];
        _magicController.magicView.sliderColor = [UIColor redColor];
        _magicController.magicView.layoutStyle = VTLayoutStyleDivide;
        _magicController.magicView.switchStyle = VTSwitchStyleDefault;
        _magicController.magicView.navigationHeight = 40.f;
        _magicController.magicView.dataSource = self;
        _magicController.magicView.delegate = self;
    }
    return _magicController;
}

或者像这样

#import "VTMagicController.h"

@interface ViewController : VTMagicController

@end
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.magicView.navigationColor = [UIColor whiteColor];
    self.magicView.sliderColor = [UIColor redColor];
    self.magicView.layoutStyle = VTLayoutStyleDefault;
    self.magicView.switchStyle = VTSwitchStyleDefault;
    self.magicView.navigationHeight = 40.f;
    self.magicView.dataSource = self;
    self.magicView.delegate = self;

    [self.magicView reloadData];
}

协议

您必须符合 <VTMagicViewDataSource><VTMagicViewDelegate><VTMagicReuseProtocol> 是可选的。

VTMagicViewDataSource

- (NSArray<NSString *> *)menuTitlesForMagicView:(VTMagicView *)magicView {
    return _menuList;
}

- (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(50, 50, 50) forState:UIControlStateNormal];
        [menuItem setTitleColor:RGBCOLOR(169, 37, 37) forState:UIControlStateSelected];
        menuItem.titleLabel.font = [UIFont fontWithName:@"Helvetica" size:16.f];
    }
    return menuItem;
}

- (UIViewController *)magicView:(VTMagicView *)magicView viewControllerAtPage:(NSUInteger)pageIndex {
    if (0 == pageIndex) {
        static NSString *recomId = @"recom.identifier";
        VTRecomViewController *recomViewController = [magicView dequeueReusablePageWithIdentifier:recomId];
        if (!recomViewController) {
            recomViewController = [[VTRecomViewController alloc] init];
        }
        return recomViewController;
    }

    static NSString *gridId = @"grid.identifier";
    VTGridViewController *gridViewController = [magicView dequeueReusablePageWithIdentifier:gridId];
    if (!gridViewController) {
        gridViewController = [[VTGridViewController alloc] init];
    }
    return gridViewController;
}

VTMagicViewDelegate

- (void)magicView:(VTMagicView *)magicView viewDidAppear:(UIViewController *)viewController atPage:(NSUInteger)pageIndex {
    NSLog(@"pageIndex:%ld viewDidAppear:%@", (long)pageIndex, viewController.view);
}

- (void)magicView:(VTMagicView *)magicView viewDidDisappear:(UIViewController *)viewController atPage:(NSUInteger)pageIndex {
    NSLog(@"pageIndex:%ld viewDidDisappear:%@", (long)pageIndex, viewController.view);
}

- (void)magicView:(VTMagicView *)magicView didSelectItemAtIndex:(NSUInteger)itemIndex {
    NSLog(@"didSelectItemAtIndex:%ld", (long)itemIndex);
}

VTMagicReuseProtocol

当页面被复用时,将调用此方法,您应该在此处清除旧数据或重置内容偏移量。

- (void)vtm_prepareForReuse {
    NSLog(@"clear old data if needed:%@", self);
}

特性

外观方法

当用户切换页面时,VTMagic 将自动调用外观回调,您可能需要在其中做一些操作,例如刷新页面信息。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    // do something...
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    // do something...
}

获取magicController

在导入文件VTMagic.h后,您可以在任何符合<VTMagicProtocol>的子视图控制器中获取最近的magicController。

NSInteger currentPage = self.magicController.currentPage;
UIViewController *viewController = self.magicController.currentViewController;

切换到指定页面

您可以切换到某个特定的页面。

[self.magicView switchToPage:3 animated:YES];
[self.magicController switchToPage:3 animated:YES];

获取指定视图控制器

您可以通过页码获取任何页面控制器,如果页面不在屏幕上,它将返回nil。

UIViewController *viewController = [self.magicView viewControllerAtPage:3];
UIViewController *viewController = [self.magicController viewControllerAtPage:3];

作者

VictorTian 邮箱: [email protected]

许可证

VTMagic遵循MIT许可证发布。详细信息请参阅LICENSE。