iOS中分段控制器与UIScrollView结合使用

版权声明:本文为博主原创文章,未经博主允许不得转载。

指定根视图:

[objc] view plain copy

  1. // 设置window的根视图控制器  
  2. self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]];  

定义属性

[objc] view plain copy

  1. #import "RootViewController.h"  
  2. #import "FirstViewController.h"  
  3. #import "SecondTableViewController.h"  
  4. @interface RootViewController ()<UIScrollViewDelegate>  
  5. @property (nonatomic, strong) UISegmentedControl *segmentedControl;  
  6. @property (nonatomic, strong) UIScrollView *scrollView;  
  7. @property (nonatomic, strong) FirstViewController *firstVC;  
  8. @property (nonatomic, strong) SecondTableViewController *secondTVC;  
  9. @end  
  10.   
  11. @implementation RootViewController  

创建实现:

[objc] view plain copy

  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     // 适应scrollView  
  6.     self.automaticallyAdjustsScrollViewInsets = NO;  
  7.       
  8.     self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"first", @"second"]];  
  9.     self.navigationItem.titleView = self.segmentedControl;  
  10.     [self.segmentedControl addTarget:self action:@selector(segmentedControlAction:) forControlEvents:UIControlEventValueChanged];  
  11.     self.segmentedControl.selectedSegmentIndex = 0;  
  12.       
  13.     // 创建scrollView  
  14.     self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 64)];  
  15.     [self.view addSubview:self.scrollView];  
  16.     // 设置scrollView的内容  
  17.     self.scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width * 2, [UIScreen mainScreen].bounds.size.height - 64);  
  18.     self.scrollView.pagingEnabled = YES;  
  19.     self.scrollView.bounces = NO;  
  20.       
  21.     // 创建控制器  
  22.     self.firstVC = [FirstViewController new];  
  23.     self.secondTVC = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain];  
  24.     // 添加为self的子控制器  
  25.     [self addChildViewController:self.firstVC];  
  26.     [self addChildViewController:self.secondTVC];  
  27.     self.firstVC.view.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));  
  28.     self.secondTVC.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));  
  29.     [self.scrollView addSubview:self.firstVC.view];  
  30.     [self.scrollView addSubview:self.secondTVC.view];  
  31.       
  32.     // 设置scrollView的代理  
  33.     self.scrollView.delegate = self;  
  34. }  

分段控制器点击方法

[objc] view plain copy

  1. - (void)segmentedControlAction:(UISegmentedControl *)sender  
  2. {  
  3.     [self.scrollView setContentOffset:CGPointMake(sender.selectedSegmentIndex * self.scrollView.frame.size.width, 0) animated:NO];  
  4. }  
  5.   
  6. - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView  
  7. {  
  8.     NSInteger n = scrollView.contentOffset.x / scrollView.frame.size.width;  
  9.     self.segmentedControl.selectedSegmentIndex = n;  
  10. }  

first/和second分别为UIViewController和UITableViewController只设颜色即可看效果(这里不做创建)

最终效果:

有问题微博私信我.http://weibo.com/hanjunqiang

原文地址:http://blog.csdn.net/qq_31810357/article/details/49611345

时间: 2024-11-02 11:04:57

iOS中分段控制器与UIScrollView结合使用的相关文章

实例讲解iOS中的UIPageViewController翻页视图控制器_IOS

一.引言 UIPageViewController是iOS中少见的动画视图控制器之一,通过它既可以创建类似UIScrollView与UIPageControl结合的滚屏视图,也可以创建类似图书效果的炫酷翻页视图. UIPageViewController在iOS 5 SDK中首次引入,它使得开发者可以使用这个ViewController创建分页视图.在iOS 6中,这个类有了更新,支持滚动过渡效果.使用Page View,用户可以方便的通过手势在多个页面之间导航.UIPageViewContro

iOS开发中标签控制器的使用——UITabBarController

iOS开发中标签控制器的使用--UITabBarController 一.引言         与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航,导航中在对ViewController进行管理. 二.创建一个标签控制器         通过如下的步骤,我们可以很简便

ios中带TabBar的导航控制器,自定义右滑手势返回

问题描述 ios中带TabBar的导航控制器,自定义右滑手势返回 右滑返回上一级页面时,tabBar不能紧贴着第一级页面,而是浮在最上层 解决方案 看不明白是什么情况...看不明白是什么情况...看不明白是什么情况...看不明白是什么情况...看不明白是什么情况...看不明白是什么情况...

iOS 中 Storyboard 与 Xib 间控制器跳转 - 简化整理完整版

iOS 中 Storyboard 与 Xib 间控制器跳转 - 简化整理完整版 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 按以下四种情况分别说明,应该不缺啥了吧! Xib.controll

《Swift iOS应用开发实战》——3.2Calculator项目中的控制器

3.2Calculator项目中的控制器 在Calculator项目中,ViewController.swift文件中所定义的ViewController类就是一个视图控制器,与它关联的视图就是Main.storyboard文件中ViewController场景里面的View,如图3-2所示.如果我们选择故事板中ViewController场景中的控制器,然后按Command+Option+3快捷键切换到标识检视窗,就会看到Custom Class部分的Class被设置为ViewControll

iOS中Animation 动画 UI_22

版权声明:本文为博主原创文章,未经博主允许不得转载. 1.iOS中我们能看到的控件都是UIView的子类,比如UIButton UILabel UITextField UIImageView等等 2.UIView能够在屏幕的显示是因为在创建它的时候内部自动添加一个CALayer图层,通过这个图层在屏幕上显示的时候会调用一个drawRect: 的方法,完成绘图,才能在屏幕上显示 3.CALayer 本身就具有显示功能,但是它不能响应用户的交互事件,如果只是单纯的显示一个图形,此时你可以使用CALa

iOS中使用MD5加密字符串_IOS

1,新建NSString的分类,记得添加加密所需的头文件#import <CommonCrypto/CommonDigest.h> , NSString+MD5.h: #import <Foundation/Foundation.h> #import <CommonCrypto/CommonDigest.h> @interface NSString (MD5) + (NSString *)md5To32bit:(NSString *)str; @end 2,编写加密方法

iOS 中的 21 种设计模式

iOS 中的 21 种设计模式 对象创建原型(Prototype) 使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象. 1 2 NSArray *array = [[NSArray alloc] initWithObjects:@1, nil]; NSArray *array2 = array.copy; array 就是原型了,array2 以 array 为原型,通过 copy 操作创建了 array2. 当创建的实例非常复杂且耗时,或者新实例和已存在的实例值相同,使用原型模式

iOS系统菜单控制器UIMenuController使用简介

iOS系统菜单控制器UIMenuController使用简介 一.引言    在许多iOS应用中,当用户进行某文字或图片区域的长按操作时,都会弹出一个系统菜单控件,用户可以通过操作菜单控件上的按钮进行数据的复制.剪切.粘贴等操作.系统原生的某些控件已经支持了对UIMenuController的唤出操作,然而并不是所有控件都支持,开发者可以通过自定义UIMenuController来更加灵活的使用菜单控件,在前面博客中有介绍iOS剪切板相关知识,地址如下: iOS剪切板UIPasteboard使用