生命周期
1、-(void)loadView
-
苹果建议:在
loadView
方法中,只是创建子视图控件,不设置位置,在viewWillLayoutSubviews
方法中设置控件的位置 -
在
loadView
方法中,通常不要调用[super loadView]
如果调用父类方法默认会创建一个空视图
注:如果重写了loadview,控制器只会加载loadview里的东西,就不会加载xib storyboard
-
什么时候被调用?
- 每次访问UIViewController的view(比如controller.view)而且view为nil,loadView方法就会被调用。
- 它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view
- 如果在初始化UIViewController指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件
- 如果没有明显地传xib文件名,就会加载跟UIViewController同名的xib文件
- 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性,大致如下
self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease];
-
怎样正确使用这个方法?
- 如果想通过代码来创建UIViewController的view,就要重写loadView方法,并且不需要调用[super loadView],因为在第3点里面已经提到:若没有xib文件,[super loadView]默认会创建一个空白的UIView。我们既然要通过代码来自定义UIView,那么就没必要事先创建一个空白的UIView
2、+ (void)load
// 类一加载到内存时就会调用这个方法
+ (void)load {
}
+(void)initialize 和 + (void)load区别
+(void)initialize: 类第一次被调用(或使用)的时候调用
+(void)load: 类第一次装进内存的时候调用
load调用比initial时间更前
坐标转化
// 以c为坐标原点的b的fram,转换为在a中的frame
[a convertRect:b fromView:c];
// 以a为坐标原点的b的fram,转换为在c的fram
[a convertRect:b toView:c];
导航栏
-
(设置了UINavigationBar的
translucent
为NO) || (设置UINavigationBar的backgroundImage
有alpha值的图片),则UINavigationBar的高斯控件
会消失 -
UINavigationBar 的
barTintColor
属性- 有
高斯控件
: 影响高斯控件
最后一个子控件的背景色 - 无
高斯控件
: 影响_UIBarBackground的背景色
- 有
-
UINavigationBar 的
backgroundImage
属性- 影响_UIBarBackground的子控件(UIImageView)的image属性
-
translucent属性(透明度)
- iOS7 以后 translucent 默认为 YES,rootView 从(0,0)开始布局,修改
edgesForExtendedLayout
属性可以改变布局; - translucent 为 NO,rootView 从导航栏底部开始布局,修改
edgesForExtendedLayout
属性无法改变布局,可以通过设置extendedLayoutIncludesOpaqueBars = YES
从(0,0)开始布局; -
automaticallyAdjustsScrollViewInsets
默认值是 true,表示在全屏模式下会自动修改第一个添加到 rootView 的 scrollview 的 contentInset 为(64,0,0,0),用来纠正scrollview在全屏模式下的显示; - 设置 UINavigationBar 的背景图片可以改变导航栏背景色,如果背景图片包含 alpha 的色值,系统会默认将 translucent 设置为 true,没有包含 alpha 色值会将 translucent 设置为 false。但这是针对没有手动设置 translucent 值的情况,如果我们手动设置了 translucent,那么系统就不会根据背景图片的 alpha 来修改 translucent。
- iOS7 以后 translucent 默认为 YES,rootView 从(0,0)开始布局,修改
网友评论