下面说一下在短视频开发中,仿抖音的短视频滑动导航控制器的总体流程:
将ViewController.view加入到下方的ScrollView中
根据数据源Titles对上方TabBar中CollectionCell上的Label赋值
处理下方ScorllView与上方TabBar之间的协同问题
具体代码实现如下:
CustomPagerController.h
#import "TYTabButtonPagerController.h"
@interface CustomPagerController : TYTabButtonPagerController
@end
CustomPagerController.m
#import "CustomPagerController.h"
#import "RecommendVideoVC.h"
#import "HotVideoVC.h"
#import "NearByVideoVC.h"
//Alan change
@interface CustomPagerController(){
}
@property(nonatomic,strong)UIButton *search;
@property(nonatomic,strong)NSArray *infoArrays;
@end
@implementation CustomPagerController
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.navigationBar.hidden = YES;
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.navigationBarHidden = YES;
[self.view addSubview:self.search];
self.adjustStatusBarHeight = YES;
self.cellSpacing = 8;
self.infoArrays = [NSArray arrayWithObjects:@"推荐",@"热门",@"附近",nil];
[self setBarStyle:TYPagerBarStyleProgressView];
[self setContentFrame];
}
#pragma mark - TYPagerControllerDataSource
- (NSInteger)numberOfControllersInPagerController {
return self.infoArrays.count;
}
- (NSString *)pagerController:(TYPagerController *)pagerController titleForIndex:(NSInteger)index {
return self.infoArrays[index];
}
- (UIViewController *)pagerController:(TYPagerController *)pagerController controllerForIndex:(NSInteger)index {
if(index == 0){
//推荐
RecommendVideoVC *videoVC = [[RecommendVideoVC alloc]init];
NSString *url = [purl stringByAppendingFormat:@"?service=Video.getRecommendVideos&uid=%@&type=0",[Config getOwnID]];
videoVC.requestUrl = url;
return videoVC;
} else if(index == 1) {
//热门
HotVideoVC *videoVC= [[HotVideoVC alloc]init];
videoVC.ismyvideo = 0;
NSString *url = [purl stringByAppendingFormat:@"?service=Video.getVideoList&uid=%@&type=0",[Config getOwnID]];
videoVC.url = url;
return videoVC;
}else if(index == 2) {
//附近
NearByVideoVC *videoVC= [[NearByVideoVC alloc]init];
return videoVC;
}else{
return nil;
}
}
#pragma mark - override delegate
- (void)pagerController:(TYTabPagerController *)pagerController configreCell:(TYTabTitleViewCell *)cell forItemTitle:(NSString *)title atIndexPath:(NSIndexPath *)indexPath {
[super pagerController:pagerController configreCell:cell forItemTitle:title atIndexPath:indexPath];
}
- (void)pagerController:(TYTabPagerController *)pagerController didSelectAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"wmplayer:===6.28===%ld",(long)indexPath.row);
}
- (void)pagerController:(TYTabPagerController *)pagerController didScrollToTabPageIndex:(NSInteger)index{
}
#pragma mark - set/get
-(UIButton *)search {
if (!_search) {
_search = [UIButton buttonWithType:0];
[_search setImage:[UIImage imageNamed:@"home_search"] forState:0];
_search.frame = CGRectMake(_window_width-50, 20+statusbarHeight, 40, 40);
[_search addTarget:self action:@selector(doSearchBtn) forControlEvents:UIControlEventTouchUpInside];
}
return _search;
}