iOS学习笔记——UIViewController学习
来源:互联网 发布:协同过滤 稀疏矩阵 编辑:程序博客网 时间:2024/04/30 03:53
视图控制器的概念
- 视图控制器就像个大管家,用来管理视图的加载、卸载、横屏竖屏显示等操作。
- 每一个界面都应该由一个控制器来管理显示。
- UIViewController是所有视图控制器的父类。
- iOS提供了许多内置的视图控制器类,以支持标准的用户界面部分,比如导航控制器(UINavigationController),标签栏控制器(UITabBarController),表视图控制器(UITableViewController)等
视图控制器与视图的关系
- 视图控制器是传统的Model-View-Controller(MVC)设计模式中 —— 控制器
- UIViewController提供了许多控制器的基本功能,因为它是所有控制器的基类
- 视图控制器负责创建和管理一组视图,它本身就提供了一个视图,称为该控制器的根视图(view),协调管理数据和视图之间的交互
视图控制器的根视图创建方式
//视图控制器是通过loadView方法创建的根视图//loadView方法调用的前提条件:// 1、当前视图控制器的根视图为空// 2、通过getter方法访问当前控制器的根视图- (void) loadView { //创建每个控制器的根视图 UIView *rootView = [[UIView alloc] initWithFrame: [UIScreen mainScreen].ApplicationFrame]; self.view = rootView; self.view.backgroundColor = [UIColor redColor]; //初始化其他视图...}
模态视图
- 通过视图控制器的presentModalViewController: 方法弹出的视图我们都称为模态视图
- 模态视图出现的场景一般是临时弹出的窗口,譬如:登陆窗口
- 模态视图弹出时通过modalTransitionStyle属性设置不同的动画效果
- 调用 dismissModalViewControllerAnimated: 方法关闭窗口
//创建视图控制器 ModalViewController *mViewCtrl =[ [ModalViewController alloc] init]; //设置视图弹出时的动画效果 mc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; //通过模态视图的形式打开视图控制器 [self presentModalViewController:mViewCtrl animated:YES];
模态视图的原理
- 我们用 presentModalViewController: animated:打开一个控制器,是把当前控制器的根视图添加到window上,我们都知道根视图控制器不做显示
- 而且我们通过设置当前控制器的根视图为透明时,视图下面显示的时window,说明上一个控制器的根视图已经从window上移除掉了,那么我们知道原理是否可以自己写一个方法弹出视图,并添加我们自己想要的动画效果
//将要显示的视图控制器ModalViewController *modelVC = [[ModalViewController alloc]init];//把视图控制器里面的根视图添加的window上[self.view.window addSubview:modelVC.view];//添加动画效果modelVC.view.frame = CGRectMake(320, 20, 320, self.view.frame.size.height); [UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:.35];self.view.frame = CGRectMake(-320, 20, 320, self.view.frame.size.height);modelVC.view.frame = CGRectMake(0, 20, 320, self.view.frame.size.height);[UIView commitAnimations];
模态视图的使用场景
- 1、收集用户输入信息
- 2、临时呈现一些内容
- 3、临时改变工作模式
- 4、显示一个新的view层级
- 这几种情形都会暂时中断程序正常的执行流程,主要作用是收集或者显示一些信息。
Presenting 和 Presented
- 当我们在View Controller A中模态显示View Controller B的时候,A就充当Presenting View Controller(弹出VC),而B就是Presented ViewController(被弹出VC)。
- 官方文档建议这两者之间通过delegate实现交互,因此我们在实际应用中,最好也遵守这个原则,在被弹出的VC中定义delegate,然后在弹出VC中实现该代理,这样就可以比较方便的实现两者之间的交互。
UIViewController控制视图的常用方法
//创建载入根视图- (void) loadView;//视图载入完成- (void) viewDidLoad;//视图将出现在屏幕前- (void) viewWillAppear:(BOOL)animated;//视图已经在屏幕上渲染完成- (void) viewDidAppear:(BOOL)animated;//视图将被从屏幕上移除之前执行- (void) viewWillDisappear:(BOOL)animated;//视图已经从屏幕上移除- (void) viewDidDisappear:(BOOL)animated;//接受到内存警告- (void) didReceiveMemoryWarning;
阅读全文
0 0
- iOS学习笔记——UIViewController学习
- IOS学习笔记7—UIViewController
- iOS开发学习笔记——控制器(UIViewController)
- iOS学习笔记5-UIViewController(1)
- iOS控件学习笔记(UIView、UIViewController)
- iOS UI学习笔记(六)UIViewController
- UIViewController学习笔记
- UIViewController学习笔记
- iOS——UIViewController
- IOS学习 UIViewController 视图控制器的创建
- iOS学习笔记—MVC
- iOS基石——UIViewController
- iOS学习笔记——iOS国际化
- IOS学习笔记—IOS通知中心 .
- iOS学习应用开发就业课_009:UIViewController的使用
- iOS开发学习笔记——UITableview
- iOS学习笔记——Core Data
- iOS学习笔记——Core Data
- Exoplayer+Exomedia之玩转视频播放事件监听
- LightOJ
- iOS开发学习笔记----objective-c之block初探
- FFMPEG学习【libavutil】:Crypto and Hashing(一)
- Objective-C消息机制的原理
- iOS学习笔记——UIViewController学习
- CoreData的简单使用
- HTTP请求报文和HTTP响应报文
- 【R的机器学习】模型性能提升探索:朴素贝叶斯
- 谷歌浏览器访问网站提示“您要访问的网站包含恶意软件”
- 知识收集
- iOS开发调试概述
- 【转】NSCoding协议
- 【转】TableViewCell不重用