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];
// 适应scrollView
self.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;
// 创建scrollView
self.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只设颜色即可看效果(这里不做创建)
最终效果:
有问题微博私信我.http://weibo.com/hanjunqiang
iOS中分段控制器与UIScrollView结合使用的更多相关文章
- iOS中多控制器的使用
通常情况下,一个app由多个控制器组成,当app中有多个控制器的时候,我们就需要对这些控制器进行管理. 在开发过程中,当有多个View时,可以用一个大的view去管理多个小的view,控制器也是如此, ...
- iOS中UINavigationController控制器使用详解
一.概述 UINavigationController用来管理视图控制器,在多视图控制器中常用.它以栈的形式管理视图控制器,管理视图控制器个数理论上不受限制(实际受内存限制),push和pop方法来弹 ...
- IOS中导航控制器的代理及隐藏控制器刚出现时的滚动条
一.导航控制器的代理 1.UINavigationController的delegate属性 2.代理方法 1> 即将显示新控制器时调用 /* navigationController : 导航 ...
- iOS:iOS中的多控制器管理
iOS中的控制器有三种创建方式: 1.通过storyboard创建 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@" ...
- UISegmentedControl字体大小,颜色,选中颜色,左边椭圆,右边直线的Button 解决之iOS开发之分段控制器UISegmentedControl
NSArray *segmentedArray = [NSArrayarrayWithObjects:STR(@"Mynews"),STR(@"Systemmes ...
- iOS 学习笔记三【segmentedControl分段控制器详细使用方法】
在iOS开发过程中,分段控制器的使用频率还是蛮高的,下面是我写的一个简单的demo,大家可以把代码直接复制过去,就可以使用,ios9最新支持. // // ViewController.m // 03 ...
- iOS开发之分段控制器(UISegmentedControl)
今天我们来说下iOS中的分段选择控制器UISegmentedControl,这一控件有什么作用呢 每个segment都能被点击,相当于集成了多个button 通常我们会点击不同的segment来切换不 ...
- 分段控制器UISegmentedControl的使用、同一个控制器中实现多个View的切换、addChildViewController等方法的使用
本文先讲解简单的分段控制器UISegmentedControl的使用,然后具体讲解它最常使用的场景:同一个控制器中实现多个View的切换. 文章构思: 1.先直接讲解一张UI效果图的四种实现方式. 2 ...
- IOS中的UINavigationController(导航控制器)
UINavigationController UINavigationControlle:导航控制器,是iOS中最常用的多视图控制器之一,它用来管理多个试图控制器 导航控制器可以认为是管理控制器的控制 ...
随机推荐
- Dynamics 365中使用Web API将查找字段的值设置为空值的方法。
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复270或者20180424可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...
- eclipse创建web项目修改路径
- 初识Redis系列之一:简单介绍
一:Redis是什么? Redis全称:REmote DIctionary Server(Redis) .Redis是一个由Salvatore Sanfilippo写的key-value存储系统,AN ...
- ubuntu14.04+sublime3+latex配置
目的:用题目所说的三个东西写论文. 配置方法:参考 http://blog.csdn.net/bleedingfight/article/details/72810606, 但该博客所提的texliv ...
- 项目实战15.2—企业级堡垒机 jumpserver快速入门
必备条件 硬件条件 ① 一台安装好 Jumpserver 系统的可用主机(堡垒机) ② 一台或多台可用的 Linux.Windows资产设备(被管理的资产) 服务条件 (1)coco服务 ① 鉴于心态 ...
- Template Method 模板设计模式
什么是模板设计模式 对于不了解的模板设计模式的来说,可以认为如同古代的造纸术一样,纸所以成型,取决于用了模板的形状,形状又由镂空的木板组成,而你想要造什么纸,又取决于你使用什么材料. 上面提到了两个关 ...
- 下篇:python的基本数据类型以及对应的常用方法(列表、元组、字典、集合)
为了日后便于查询,本文所涉及到的所有命令集合如下: python中的基本数据类型有数字.字符串.布尔值.列表.元组.字典.就像每一个职业有自己特定的技能,比如医生能看病,农民能种田,每种数据类型也有属 ...
- 在ubuntu上安装最新稳定版本的node及npm
背景 通过ubuntu官方apt安装工具安装的node是最新LTS版本的,而本人是个有点强迫症的人,喜欢追求新的东西,也就是想方设法想要去安装最新版本的node,所以本文也就产生了,附上ubuntu安 ...
- CNN在中文文本分类的应用
深度学习近一段时间以来在图像处理和NLP任务上都取得了不俗的成绩.通常,图像处理的任务是借助CNN来完成的,其特有的卷积.池化结构能够提取图像中各种不同程度的纹理.结构,并最终结合全连接网络实现信息的 ...
- Android的AIDL机制
Android 接口定义语言 (AIDL) AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似. 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的 ...