创建一个工程之后改成MRC分4步
1、创建完空模板之后,修改环境为MRC
2、将AppDelegate.h文件中的strong改为retain
3、在AppDelegate.m文件中重写dealloc方法将实例变量_window释放一次
4、在创建的window对象的最后加autorelease,完成内存管理
UIView的基本属性:
添加视图:
移动视图的位置:
随机色: [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0]
视图如果不给定背景色,默认是透明
与屏幕等大:
View *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
与window等大:
View *view = [[UIView alloc] initWithFrame:[self.window bounds]];
frame、bounds、center之间的区别
frame:一个视图默认其左上角点就是这个视图的坐标系原点,并且每一个视图都有自己的坐标系,一个视图布局时,frame中的X,Y是相对于父视图坐标系原点的距离
center:一个视图的中心点与视图的frame是息息相关的,center与frame都是相对于父视图来说的,视图中心点center.x为视图本身frame中的x值加上视图本身宽的一半
1、frame、center是相对于父视图而言的,改变视图本身是frame、center会直接影响自身在其父视图上的显示位置
2、bounds是相对于自身而言的,改变bounds的值会影响自身坐标系原点的位置,进而影响子视图在其上的显示位置
3、一个视图bounds的默认值为(0,0,宽,高),因为bounds前面的两个值x,y代表的含义是视图本身左上角点距离其自身坐标系原点的距离,因为视图本身坐标系与左上角重合,所以是0
4、改变一个视图的bounds中的x,y值,不会造成自身位置的变化,因为父视图的bounds没有改变,自身的frame以及center没有任何变化,所以与父视图的关系没有任何变化,所以不会动。
5、改变一个视图的bounds中的宽和高,他是延中心放大或者缩小
应用程序启动流程
1、也是从main函数入口,找到应用程序代理
2、应用程序delegate的类名是任何接受了UIApplicationDelegate的类
3、应用代理的作用,根据应用程序传递过来的状态做出相应的处理
4、一旦应用程序的某种状态触发,就会执行相应的代理方法