VTMagic 是一个适用于 iOS 的页面容器库,如果您需要,可以自定义不同的识别符来自定义每个页面控制器。它非常易于使用!(中文手册链接)
VTMagic
文件夹拖到您的项目中。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>
是可选的。
- (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;
}
- (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);
}
当页面被复用时,将调用此方法,您应该在此处清除旧数据或重置内容偏移量。
- (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...
}
在导入文件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。