iOS中分段控制器与UIScrollView结合使用
指定根视图:
// 设置window的根视图控制器self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]];
定义属性
#import "RootViewController.h"
#import "FirstViewController.h"
#import "SecondTableViewController.h"
@interface RootViewController ()<UIScrollViewDelegate>
@property (nonatomic, strong) UISegmentedControl *segmentedControl;
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) FirstViewController *firstVC;
@property (nonatomic, strong) SecondTableViewController *secondTVC;
@end@implementation RootViewController
创建实现:
- (void)viewDidLoad
{[super viewDidLoad];// 适应scrollViewself.automaticallyAdjustsScrollViewInsets = NO;self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"first", @"second"]];self.navigationItem.titleView = self.segmentedControl;[self.segmentedControl addTarget:self action:@selector(segmentedControlAction:) forControlEvents:UIControlEventValueChanged];self.segmentedControl.selectedSegmentIndex = 0;// 创建scrollViewself.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 64)];[self.view addSubview:self.scrollView];// 设置scrollView的内容self.scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width * 2, [UIScreen mainScreen].bounds.size.height - 64);self.scrollView.pagingEnabled = YES;self.scrollView.bounces = NO;// 创建控制器self.firstVC = [FirstViewController new];self.secondTVC = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain];// 添加为self的子控制器[self addChildViewController:self.firstVC];[self addChildViewController:self.secondTVC];self.firstVC.view.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));self.secondTVC.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));[self.scrollView addSubview:self.firstVC.view];[self.scrollView addSubview:self.secondTVC.view];// 设置scrollView的代理self.scrollView.delegate = self;
}
分段控制器点击方法
- (void)segmentedControlAction:(UISegmentedControl *)sender
{[self.scrollView setContentOffset:CGPointMake(sender.selectedSegmentIndex * self.scrollView.frame.size.width, 0) animated:NO];
}- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{NSInteger n = scrollView.contentOffset.x / scrollView.frame.size.width;self.segmentedControl.selectedSegmentIndex = n;
}
first/和second分别为UIViewController和UITableViewController只设颜色即可看效果(这里不做创建)
最终效果:
iOS开发者交流群:446310206
iOS中分段控制器与UIScrollView结合使用相关推荐
- iOS 中导航控制器全屏向右滑动返回上一界面
在iOS中,导航控制器默认就自带了侧滑功能,当用户在界面的左边(左边边缘)滑动的时候,才会有侧滑功能.但是我们往往在开发的过程中需要在屏幕的任意位置滑动,都需要返回到上一个界面. 多说无意,直接看代码 ...
- iOS中单个控制器横屏切换的研究
在项目中遇到了一个问题,app中有两个控制器要求可以切换横屏,研究了半天,终于找到了解决办法. 在AppDelegate中写 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...
- IOS 中视图控制器的生命周期
1.init Allocating critical data structures required by your view controller 不要出现创建view的代码.良好的设计,在ini ...
- iOS中UINavigationController控制器使用详解
一.概述 UINavigationController用来管理视图控制器,在多视图控制器中常用.它以栈的形式管理视图控制器,管理视图控制器个数理论上不受限制(实际受内存限制),push和pop方法来弹 ...
- iOS中视图控制器指定自定义UIView
他的好处就是在程序执行viewDIdLoad之前可以把我们需要用的数据加载完成.这也是减轻控制器的负担之一的办法.但是我个人觉得好是每有数据的延迟加载的功能牛.延迟加载只在数据需要的时候才被加载到视图 ...
- iOS开发中标签控制器的使用——UITabBarController
iOS开发中标签控制器的使用--UITabBarController 一.引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理 ...
- ios 销毁当前页面重新开启_问:如何强制销毁iOS中的视图控制器?
是否可以在iOS中回收/强制销毁UIViewController?问:如何强制销毁iOS中的视图控制器? 我用这github project得到一个定制UIViewControllerTransiti ...
- ios中常用的第三方库
下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...
- ios 中的小技巧 - 总有你想要的 一
UITableView的Group样式下顶部空白处理 在viewWillAppear里面添加如下代码: //分组列表头部空白处理 CGRect frame = myTableView.tableHea ...
- iOS中常见的设计模式(MVC/单例/委托/观察者)
关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...
最新文章
- docred数据集情况笔记
- 从输入字段读取属性时,HTML编码丢失
- 在哪里能收到python实例代码-python实例代码
- 使用brew安装Logstash(Mac)
- IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色
- 行为型模式:责任链模式
- dmg文件 linux,安装和使用Dmg2Img在Linux上创建macOS安装盘
- MySQL DATEDIFF(d1,d2)	计算日期 d1-d2 之间相隔的天数
- VTK:Animation用法实战
- 版是什么版本的教材_acca教材有哪些版本
- 用分布式缓存提升ASP.NET Core性能
- php中数组生成下拉选项,php利用数组填充下拉列表框
- python+OpenCV图像处理(一)读取、复制、显示、保存
- python copy
- 如何用范德蒙行列式完成插值
- Turtlebot2激光雷达(Rplidar)gmapping构建地图
- amazeui学习笔记--css(HTML元素1)--按钮Button
- FASTX-Toolkit
- SNIP的升级版SNIPER(效果比Mosaic更佳)
- C++20 barrier
热门文章
- pymysql executemany()函数
- 基本数据类型及其对应的包装类
- 罗马仕php30重量,认真测评 篇三:罗马仕sence8P+两年使用报告
- 电脑已安装软件提取安装包_SPSS 24,软件安装包及安装教程
- 单片机c语言中void key(void),单片机C语言编程
- matlab解六元一次方程,如何用MATLAB编写六元一次方程组
- mysql根据不同的值查询不同的字段_sql根据一个字段不同值查询不同表中的一个字段...
- Spring属性编辑器解读(转载)
- jquery.treeview.js
- 八段锦是一种不错的养生运动