IOS 学习笔记(1) 视图UIViewController
1.UIViewController *newController=[[UIViewController alloc] initWithNibName:@"XXX" bundle:nil];中XXX为名字xib的文件名,这个主要用在xib视图添加到其他视图中的时候用到,比如自定义UIView,当添加这个自定义View时,添加起xib文件名的要。
2.UIViewController创建时,函数的调用顺序如下:
[viewDidLoad]
[viewWillAppear:]
[viewWillLayoutSubviews] (iOS之后新API)
[viewDidLayoutSubviews] (IOS之后新API)
[viewDidAppear:] 当UIViewController销毁时,函数的调用顺序为:
[viewWillDisappear:]
[viewDidDisappear:]
[viewDidUnload] (IOS6之后不再被系统调用)
不过,就像人只出生和死亡一次却能够在整个人生的道路上起起伏伏,UIViewController的viewDidLoad和viewDidUnload只会被系统调用一次,但是其他几个方法会随着主View的状况,反复被调用。
3UIViewController对于旋转的支持
UIViewController在支持旋转时也拥有一套消息处理函数
算上viewWillLayoutSubviews和viewDidLayoutSubviews两个函数,这些回调函数会被系统根据固定的顺序触发调用。这个顺序会根据具体的操作系统的不同而不同
在IOS5中,此顺序如下:
[shouldAutorotateToInterfaceOrientation:]
[willRotateToInterfaceOrientation:duration:]
[viewWillLayoutSubviews]
[viewDidLayoutSubviews]
[willAnimateRotationToInterfaceOrientation:duration:]
[didRotateFromInterfaceOrientation:]
在IOS6中,此顺序如下:
[shouldAutorotate]
[supportedInterfaceOrientations]
[willRotateToInterfaceOrientation:duration:]
[viewWillLayoutSubviews]
[viewDidLayoutSubviews]
[willAnimateRotationToInterfaceOrientation:duration:]
[didRotateFromInterfaceOrientation:]
当开始调用willRotateToInterfaceOrientation:duration时,当前所有布局都还没有变
当开始调用willAnimateRotationToInterfaceOrientation:duration:时,所有界面的布局已经根据autoresize机制或者autolayout机制变更完毕,开发者只是在此函数中可以提供更多的布局配置
当开始调用didRotateFromInterfaceOrientation时,所有关于旋转的布局已经全部完成。
3.多层UIViewController
就像UIView可以addSubview和removeFormSuperview般,IOS5之后,UIViewController也能够进行多层次的叠加
UIViewController的多层编程API和UIView相似
-(void)addChildViewController:(UIViewController *)childController
-(void)removeFromParentViewController
UIViewController的多层开发比UIView的多层开发更为便捷,之所以这么说,是因为控制器所能做的事情往往不仅在于动作,更在于系统对于控制器回调函数的支持力度。
就像UIViewController,如果我们在他的子系统中重写方法
-(void)willMoveToParentViewController:(UIViewController *)parent
-(void)didMoveToParentViewController:(UIViewController *)parent
那么控制器就能完全掌握多层次叠加和撤销的过程,作为childViewController的UIViewController对象,会在父UIViewController将自己加到多层结构时调用willMoveToParentViewController,会在父UIViewController将自己撤销多层结构时调用didMoveToParentViewController
IOS 学习笔记(1) 视图UIViewController的更多相关文章
- iOS学习笔记——滚动视图(scrollView)
滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性 @interface BoViewController : UIViewController<UIScro ...
- IOS 学习笔记(3) 视图UITabbarController
1.UITabbarViewController标签试图控制器.由于标签页本就起着分类的作用,所以往往呈现的视图内容之间,可以是毫不相关的功能. UITabbarViewController仍然继承自 ...
- IOS 学习笔记(2) 视图UINavigationController
1.栈 导航控制器自身有一个针对显示内容的栈,也有一个对于导航栏的栈,当有新的内容欲显示时,进的导航栏和显示内容会被压入此栈,这样原本显示中的导航栏和显示内容则会进入到栈的更深一层中,根据栈的先进后出 ...
- [ios学习笔记之视图、绘制和手势识别]
一 视图 二 绘制 三 手势 00:31 UIGestureRecognizer 抽象类 两步 1添加识别器(控制器或者视图来完成) 2手势识别后要做的事情 UIPanGestureRecognize ...
- iOS学习笔记之触摸事件&UIResponder
iOS学习笔记之触摸事件&UIResponder 触摸事件 与触摸事件相关的四个方法如下: 一根手指或多根手指触摸屏幕 -(void)touchesBegan:(NSSet *)touches ...
- iOS学习笔记之UITableViewController&UITableView
iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论 ...
- IOS学习笔记48--一些常见的IOS知识点+面试题
IOS学习笔记48--一些常见的IOS知识点+面试题 1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...
- iOS学习笔记-自己动手写RESideMenu
代码地址如下:http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars数 ...
- iOS学习笔记-自定义过渡动画
代码地址如下:http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swif ...
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
随机推荐
- ActiveMQ使用STOMP协议的一个错误问题:Unexpected ACK received for message-id
使用某些语言环境下的stomp包(比如php python ruby),可能会出现如下问题: Unexpected ACK received for message-id 这一般可能有两个原因. 1. ...
- 响应式(css_media)
开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...
- WCF:System.Security.Cryptography.CryptographicException: 密钥集不存在
WCF使用IIS部署时,使用x509证书验证,在创建证书并正确配置程序后,访问出现错误提示: System.Security.Cryptography.CryptographicException: ...
- 异常IllegalStateException终于解决了
还是由于一个类中使用xutils进行联网请求,开启了两个线程,导致在得到请求数据之前viewPagerAdapter就已经setAdapter了,setAdapter时getCount是0,但是数据加 ...
- FlashFXP使用教程
点FlashFXP菜单栏“站点-站点管理”打开站点管理器.然后点新建站点,输入站点名称(随意),确定. 编辑站点管理器里新建的站点的相关信息,包括站点名称.地址.用户名称.密码等.编辑完成,点应用 ...
- Windows 10 : 使用BCDboot恢复双系统启动
电脑装上win10以后,立马把原来系统的启动信息删了.结果有个软件需要反激活,但是Win10已经没有Boot.ini这样的启动配置文件. 花了好多时间查找,发现这篇文章.实际操作倒是很简单.执行以下命 ...
- ASP.net MVC 无法初始化 ASP.NET Simple Membership 数据库
1.错误信息 解决办法 1 更改Web.config的连接字符串 <connectionStrings> <add name="DefaultConnection" ...
- BZOJ 1951: [Sdoi2010]古代猪文( 数论 )
显然答案是G^∑C(d,N)(d|N).O(N^0.5)枚举N的约数.取模的数999911659是质数, 考虑欧拉定理a^phi(p)=1(mod p)(a与p互质), 那么a^t mod p = a ...
- USACO Section 5.1 Musical Themes(枚举)
直接枚举O(n^3)会TLE,只要稍微加点优化,在不可能得到更优解时及时退出.其实就是道水题,虽说我提交了6次才过= =..我还太弱了 -------------------------------- ...
- php ZIP压缩类实例分享
php ZIP压缩类实例分享 <?php $zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt ...