UIViewController生命周期

UIViewController(控制器)的认识

  • 一个控制器负责管理一个大界面
  • 控制器负责界面的创建、事件处理等

类扩展

  • 格式 objc @interface 类名() /** 属性、方法的声明 */ @end
  • 作用
    • 为某个类增加额外的属性和方法声明
    • 可以写在.h.m文件中


其实,每当显示一个新界面时,
首先会创建一个新的UIViewController对象,
然后创建一个对应的全屏UIView
UIViewController负责管理这个UIView
UIViewController就是UIView的大管家
1.负责创建显示销毁UIView
2.负责监听UIView内部的事件
3.负责处理UIView与用户的交互

处理Xib中 修改某个控件可以使用一下方法
viewWillLayoutSubviews
viewDidLayoutSubviews

UIViewController内部有个UIView属性,就是它负责管理的UIView对象

<span style="font-size:18px;">@property(nonatomic,retain) UIView*view;</span>

关于在哪儿写Constraints?

其实在viewWillAppear这里改变UI元素不是很可靠,Autolayout发生在viewWillAppear之后,严格来说这里通常不做视图位置的修改,而用来更新Form数据。改变位置可以放在viewWilllayoutSubview或者didLayoutSubview里,而且在viewDidLayoutSubview确定UI位置关系之后设置autoLayout比较稳妥。另外,viewWillAppear在每次页面即将显示都会调用,viewWillLayoutSubviews虽然在lifeCycle里调用顺序在viewWillAppear之后,但是只有在页面元素需要调整时才会调用,避免了Constraints的重复添加。



每一个控制器(UIViewController)内部都有个默认的UIView属性

@property(nonatomic,retain) UIView *view;

控制器中管理的其他所有控件都是这个view的子控件(直接或者间接)


@property(nonatomic,readonly) UIView *superview;

 获得自己的父控件对象

使用这个方法添加的子控件会被塞到subviews数组的最后面


@property(nonatomic,readonly,copy) NSArray *subviews;

 获得自己的所有子控件对象

数组元素的顺序决定着子控件的显示层级顺序(下标越大的,越显示在上面)



@property(nonatomic) NSInteger tag;

 控件的ID(标识),父控件可以通过tag来找到对应的子控件


@property(nonatomic) CGAffineTransform transform;

 控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)


- (void)addSubview:(UIView *)view;

 添加一个子控件view


- (void)removeFromSuperview;

 从父控件中移除


- (UIView *)viewWithTag:(NSInteger)tag;

 根据一个tag标识找出对应的控件(一般都是子控件)


@property(nonatomic) CGRect frame;

 控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)


@property(nonatomic) CGRect bounds;

 控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以boundsxy一般为0)


@property(nonatomic) CGPoint center;

 控件中点的位置(以父控件的左上角为坐标原点)



// 将子控件view插入到subviews数组的index位置

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;


// 将子控件view显示到子控件siblingSubview的下面

- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;

// 将子控件view显示到子控件siblingSubview的上面

- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;


// 将子控件view放到数组的最后面,显示在最上面

- (void)bringSubviewToFront:(UIView *)view;

// 将子控件view放到数组的最前面,显示在最下面

- (void)sendSubviewToBack:(UIView *)view;


备注:

修改时间:2016年03月21日15:27:40 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值