官方给予的使用方法
使用方法:
使用CocoaPods,将以下添加只Podfile:
pod "DMPagerViewController"
在制定的VC中添加属性和delegate
@class DMPagerNavigationBarItem;
@interface TestViewController : UIViewController
@property (nonatomic,strong) DMPagerNavigationBarItem *pagerObj;
VC的m文件中实现:
- (DMPagerNavigationBarItem *)pagerItem {
return self.pagerObj;
}
在AppDelegate中制定各个VC:
TestViewController *vc1 = [[TestViewController alloc] initWithText:@"Page #1" backgroundColor:bkVC1];
vc1.pagerObj = [DMPagerNavigationBarItem newItemWithText: [[NSAttributedString alloc] initWithString:@"HOME" attributes:textAttributes]
andIcon: [UIImage imageNamed:@"rchat"]];
vc1.pagerObj.renderingMode = DMPagerNavigationBarItemModeTextAndImage;
vc2...
vc3...
初始化pagerController:
self.pagerController = [[DMPagerViewController alloc] initWithViewControllers: @[vc1,vc2,vc3]];
self.window.rootViewController = self.pagerController;
[self.window makeKeyAndVisible];
如何在tabBar中某个视图控制器中添加该效果呢?
1、通过cocoapods导入库
pod "DMPagerViewController"
2、AppDelegate.m文件中导入
#import "TabBarViewController.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
TabBarViewController *tab = [[TabBarViewController alloc]init];
self.window.rootViewController = tab;
self.window.backgroundColor = [UIColor whiteColor];
return YES;
}
3、在tabBar中子视图控制器InformationViewController中实现该效果
//InformationViewController.h文件
//导入头文件
#import "ParentViewController.h"
#import <DMPagerViewController/DMPagerViewController.h>
@interface InformationViewController : BaseViewController
@property (strong, nonatomic) DMPagerViewController *pagerController;
@end
//InformationViewController.m文件
- (void)viewDidLoad {
[super viewDidLoad];
//不让scrollView自适应,不写默认为yes,scrollView可能不按照我们的期望布局
//这个属性巨坑,因为这个属性没有设置,导致我调了一下午的程序,看了http://blog.csdn.net/hmt20130412/article/details/34523235这篇文章之后,才恍然大悟
self.automaticallyAdjustsScrollViewInsets = NO;
[self createControllers];
}
-(void)createControllers
{
NSArray *titles = @[@"最新",@"订阅",@"新车",@"试驾",@"新闻",@"图趣",@"导购",@"优惠",@"视频"];
NSArray *controllers = @[@"LatestViewController",@"SubscribeViewController",@"NewCarViewController",@"DriveViewController",@"NewsViewController",@"PictureViewController",@"ShopGuideViewController",@"PreferentialViewController",@"VideoViewController"];
NSMutableArray *controller = [[NSMutableArray alloc]init];
NSDictionary *textAttributes = @{ NSFontAttributeName : [UIFont systemFontOfSize:16.0f],NSForegroundColorAttributeName : [UIColor blackColor]};
//动态创建子视图控制器
for (NSInteger i = 0; i < controllers.count; i++) {
NSString *className = controllers[i];
Class vcClass = NSClassFromString(className);
ParentViewController *vc = [[vcClass alloc]initWithText:titles[i] backgroundColor:[UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0f]];
vc.pagerObj = [DMPagerNavigationBarItem newItemWithText:[[NSAttributedString alloc] initWithString:titles[i] attributes:textAttributes] andIcon:nil];
//设置导航的模式
vc.pagerObj.renderingMode = DMPagerNavigationBarItemModeOnlyText;
[controller addObject:vc];
}
// Create pager with items
self.pagerController = [[DMPagerViewController alloc]initWithViewControllers:controller];
self.pagerController.navigationBarHeight = 25;
//设置滚动范围、并且纵向无法滚动
self.pagerController.scrollView.contentSize = CGSizeMake(self.view.frame.size.width*controller.count, 0);
// Setup pager's navigation bar colors
UIColor *activeColor = [UIColor colorWithRed:213/255.0 green:15/255.0 blue:37/255.0 alpha:1.0f];
UIColor *inactiveColor = [UIColor colorWithRed:.84 green:.84 blue:.84 alpha:1.0];
self.pagerController.navigationBar.inactiveItemColor = inactiveColor;
self.pagerController.navigationBar.activeItemColor = activeColor;
//设置导航风格
/*
DMPagerNavigationBarStyleOnBounds = 40,
DMPagerNavigationBarStyleClose = 30,
DMPagerNavigationBarStyleNormal = 20,
DMPagerNavigationBarStyleFar = 10,
DMPagerNavigationBarStyleDefault = 0,
DMPagerNavigationBarStyleCloseToEachOne = -40
*/
self.pagerController.navigationBar.style = DMPagerNavigationBarStyleClose;
//隐藏导航
// self.pagerController.useNavigationBar = NO;
//在自定义的tabBar自定义视图控制器中,添加子视图控制器self.pagerController
[self addChildViewController:self.pagerController];
//添加子视图控制器视图到父视图中
[self.view addSubview:self.pagerController.view];
}
//希望我的分享对大家有用,也希望多多交流,共同进步~
效果图