UITableView 横向滚动(二)
2015-06-03 15:25
330 查看
在UITableView 横向滚动(一)中实现了简单的横向滑动效果,这里将横向滑动的类简单封装一下:
直接上代码:
1、MyHorizonalTableViewController.h
2、MyHorizonalTableViewController.m
3、FirstViewController.m
4、SecondViewController.m
5、ThirdViewController.m
调用:
1、AppDelegate.m中
2、MainViewController.h
3、MainViewController.m
直接上代码:
1、MyHorizonalTableViewController.h
#import <UIKit/UIKit.h> @interface MyHorizonalTableViewController : UITableViewController // 根据子视图初始化 -(instancetype)initWithViews:(NSArray*) views; // 保存views @property(retain, nonatomic) NSArray *views; // 根据子视图控制器初始化 -(instancetype)initWithViewControllers:(NSArray*) controllers; // 保存viewcontrollers @property(retain, nonatomic) NSArray *controllers; @property(assign, nonatomic) BOOL isControllers; @end
2、MyHorizonalTableViewController.m
#import "MyHorizonalTableViewController.h" static NSString *myHorizonalTableViewCellReuseIdentifier = @"MyHorizonalTableViewCell"; @interface MyHorizonalTableViewController () @end @implementation MyHorizonalTableViewController -(instancetype)initWithViews:(NSArray*) views { self = [super init]; if (self) { _views = views; _isControllers = NO; } return self; } - (instancetype)initWithViewControllers:(NSArray *)controllers { self = [super init]; if (self) { _controllers = controllers; _isControllers = YES; for (UIViewController *controller in controllers) { [self addChildViewController:controller]; } } return self; } - (void)viewDidLoad { [super viewDidLoad]; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.scrollsToTop = NO; self.tableView.transform = CGAffineTransformMakeRotation(-M_PI_2); self.tableView.showsVerticalScrollIndicator = NO; self.tableView.pagingEnabled = YES; self.tableView.backgroundColor = [UIColor whiteColor]; self.tableView.bounces = NO; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier: myHorizonalTableViewCellReuseIdentifier]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - UITableViewDataSource && UITableViewDelegate - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _isControllers ? _controllers.count : _views.count; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return CGRectGetWidth(tableView.frame); } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myHorizonalTableViewCellReuseIdentifier forIndexPath:indexPath]; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.transform = CGAffineTransformMakeRotation(M_PI_2); UIView *view; NSInteger row = indexPath.row; if (_isControllers) { UIViewController *controller = _controllers[row]; view = controller.view; } else { view = _views[row]; } view.frame = cell.contentView.bounds; [cell.contentView addSubview: view]; return cell; } @end
3、FirstViewController.m
@interface FirstViewController () @end @implementation FirstViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.navigationItem.title = @"FirstViewController"; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; label.backgroundColor = [UIColor whiteColor]; label.textColor = [UIColor blackColor]; label.text = @"FirstViewController"; label.center = self.view.center; label.textAlignment = NSTextAlignmentCenter; self.view.backgroundColor = [UIColor orangeColor]; [self.view addSubview:label]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
4、SecondViewController.m
@interface SecondViewController () @end @implementation SecondViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.navigationItem.title = @"SecondViewController"; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; label.backgroundColor = [UIColor whiteColor]; label.textColor = [UIColor blackColor]; label.text = @"SecondViewController"; label.center = self.view.center; label.textAlignment = NSTextAlignmentCenter; self.view.backgroundColor = [UIColor yellowColor]; [self.view addSubview:label]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
5、ThirdViewController.m
#import "ThirdViewController.h" @interface ThirdViewController () @end @implementation ThirdViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.navigationItem.title = @"ThirdViewController"; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; label.backgroundColor = [UIColor whiteColor]; label.textColor = [UIColor blackColor]; label.text = @"ThirdViewController"; label.center = self.view.center; label.textAlignment = NSTextAlignmentCenter; self.view.backgroundColor = [UIColor blueColor]; [self.view addSubview:label]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
调用:
1、AppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. MainViewController *viewController = [[MainViewController alloc] init]; self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:viewController]; [self.window makeKeyAndVisible]; return YES; }
2、MainViewController.h
#import <UIKit/UIKit.h> #import "MyHorizonalTableViewController.h" @interface MainViewController : UIViewController @property(strong, nonatomic) MyHorizonalTableViewController *myViewPager; @end
3、MainViewController.m
@interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.navigationItem.title = @"横向滑动的UITableViewController"; FirstViewController *firstViewController = [[FirstViewController alloc] init]; SecondViewController *secondViewController = [[SecondViewController alloc] init]; ThirdViewController *thirdViewController = [[ThirdViewController alloc] init]; // 1、将UIView作为参数调用 /* NSArray *viewsArray = @[firstViewController.view, secondViewController.view, thirdViewController.view]; _myViewPager = [[MyHorizonalTableViewController alloc] initWithViews: viewsArray]; */ // 2、将UIViewController作为参数调用 NSArray *viewsArray = @[firstViewController, secondViewController, thirdViewController]; _myViewPager = [[MyHorizonalTableViewController alloc] initWithViewControllers: viewsArray]; _myViewPager.view.frame = self.view.frame; [self addChildViewController:self.myViewPager]; [self.view addSubview:_myViewPager.view]; self.edgesForExtendedLayout = UIRectEdgeNone; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
相关文章推荐
- DRUID连接池的使用
- ueditor富文本
- ios UIImage修改大小后图片模糊解决办法
- iOS 全局修改UINavigation 后退按钮
- 动态修改UINavigationBar的背景色
- IOS UIFont 字体大全
- android UI 操作 不要在子线程中操作UI
- IOS自定义UIAlertView样式,实现可替换背景和按钮
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- Druid数据库连接池使用
- poj2299 Ultra-QuickSort
- heratbeat V2版配置LAMP HA说明及hb_gui工具使用说明
- 3个UIimageView实现图片的循环切换
- expdp query及parfile的使用
- MySql提示:The server quit without updating PID file(…)失败
- iOS学习(6)——UIAlertView
- 贪心+stack Codeforces Beta Round #5 C. Longest Regular Bracket Sequence
- Java中的break和continue关键字使用总结
- ExtJs中Ext.Ajax.request()跟getForm().submit()得用法
- iOS5中UIViewController的新方法 addChildViewController