UIView
一、iOS概述
iOS是有苹果公司开发的移动操作系统,在2010年的2010WWDC大会上宣布该名为iOS
二、UI编程
UI:User interface;
UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计
软件设计可分为;两个部分:编码设计与UI设计
UI编程包括用户、界面和用户与界面之间的交互关系
三、UIWindow
定义:
1.管理和协调应用程序的显示。
2.UIWindow类是UIView的子类,可以看做是特殊的UIView
3.一般应用程序有且只有一个UIWindow对象
创建方式:
1.Xcode 5 之前工程中有EmptyApplication模板,需要代码创建UIWindow对象
2.从Xcode6开始取消EmptyApplication,使用SingleViewApplication模板,使用StoryBoard自动创建UIWindow对象,不需要使用代码
UIWindow的自动创建方式:
1.先执行Main函数,执行UIApplicationMain()创建代理
2.看项目配置文件info.plist里面的StoryBoard的name
3.根据这个name找到对应的StoryBoard,加载StoryBoard
4.在加载的时候创建一个window
UIWindow的代码创建方式:
1.创建UIWindow对象:
self.window = [[UIWindow alloc] init];
2.确定window的大小和位置:[UIScreen mainScreen].bounds 得到当前设备屏幕的大小,位置默认为原点(左上角(0,0)点)。
self.window.frame = [UIScreen mainScreen].bounds;
3.为了能看到window,我们设置一个背景颜色,如果不设置背景颜色,默认为透明。
self.window.backgroundColor = [UIColor whiteColor];
4.将我们设置好的window对象,设置为当前应用程序的主window,并且显示
[self.window makeKeyAndVisible];
5.XCode7之后,代码实现的都需要在该方法中为window设置根视图控制器。
self.window.rootViewController = [[UIViewController alloc] init];
注意:UIViewControl本身自带一个View,所以父视图的子视图默认其本身自带的视图占第一个位置
四、UIView
定义:
1.UIView表示屏幕上的一块矩形区域
2.在iOS中几乎所有可视化控件都是UIView的子类
3.负责渲染区域的内容
4.
功能:
1.管理矩形区域里的内容
2.处理矩形区域中的事件
3.子视图的管理
4.实现UIView动画
5.UIView作为父类。子类也具有这些功能
坐标系数相关数据类型
CGPointMake:点坐标,
CGRectMake;矩形坐标,坐标值为矩形的左上角的坐标值
创建UIView
1.创建UIView,并确定位置宽高:UIView* view3 = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, height)];
2.给View设置背景色
3.将View添加到window对象中:[self.window addSubview:view_1];
UIView的常用属性
center:视图的中心点,可以更改视图位置:view.center = CGPoint(x,y);
hidden:控制视图显示或隐藏:view.hidden = YES/NO;
alpha:控制视图的透明图:view.alpha = 0~1.0;
superView:获取本视图的父视图:view.superView;
subViews:获取本市图所有子视图:view.subViews;
tag:给视图标记,用于找到该视图:view.tag = 1000 (1000j及1000以上--防止和系统的tag冲突),获取tag:[superView viewWithTag:]
View的添加:---视图后添加到父视图上,越靠近外层,先添加就是越靠近底层
addSubView:--添加子视图:[superView addSubView:view];
insertSubView:atIndex--在指定的index处插入子视图:[superView insertSubView:grayView atIndex:(NSInterger)];
insertSubView:aboveSubview:--在指定的视图的视图上面添加子视图:[superView insertSubView:grayView aboveSubview:view];
insertSubView:belowSubview:--在指定的视图的视图下面添加子视图:[superView insertSubView:grayView belowSubview:view];
视图的层次管理:
bringSubviewToFront:--把指定的子视图移动到最前面:[superView bringSubviewToFront:view];
sendSubviewToBack:--把指定的子视图移动到最后面:[superView sendSubviewToBack:view];
exchangeSubviewAtIndex:withSubviewAtIndex:--交换两个指定索引位置的子视图:[superView exchangeSubviewAtIndex:(NSInterger) withSubviewAtIndex:(NSInterger)];
removeFromSuperView--把子视图从父视图上移除:[view removeFromSuperview ];
视图的边框的添加
_nameLabel.layer.borderWidth = 0.5f;
_numberLabel.layer.borderWidth = 0.5f;
注意:UIView的center属性的类型是基本类型。
五、应用程序的启动流程
注意:任何一个程序,无论是基于Mac OS还是iOS,程序都是从main.m文件的Main函数开始执行的--应用程序的入口是M函数--main()
启动流程
第一步:main();--calls---UIApplicationMain();
第二步:UIApplicationMain()创建应用程序对象 --create--UIApplication--应用程序指定代理对象
第三步:UIApplicationMain()创建应用程序代理 --create--AppDelegate
第四步:UIApplicationMain()加载--loads--Info.plist
第五步:UIApplication--创建和管理runloop(死循环)--Runloop
第六步:UIApplication--发送消息(调用方法)--application:didFinishLaunchingWithOptions:
第七步:application:didFinishLaunchingWithOptions:--创建和显示应用程序界面和根视图控制器
六、在Main函数中return UIApplicationMain(argc, argv, @"UIApplication", NSStringFromClass([AppDelegate class]));
后两个参数的含义:
当赋值为nil的时候,就相当于@“UIApplication”,作用就是将类名传递给系统,让系统创建当前应用对象
NSStringFromClass是将类名转换为字符串
NSClassFromString是将一个字符串转换为类名来使用
当应用程序和其代理对象创建完毕之后,应用程序对象指定代理方
将整个应用程序放入到runloop(死循环)中,让应用程序一直保持运行,可以快速的处理我们的操作。runloop中两种状态交替:等待被操作和运行操作。。。。
应用程序的代理
application:didFinishLaunchingWithOptions:---告诉delegate程序启动即将完成,程序准备要运行。(delegate实现这个方法时,要创建window对象,将程序内容通过window呈现给用户。)
applicationDidBecomeActive:---告诉delegate应用程序已经进入活跃状态(重新执行被暂停的任务)
applicationWillResignActive:---告诉delegate应用程序即将进入非活跃状态(暂停游戏、停止timer等)
applicationDidEnterBackground:---告诉delegate应用程序已经进入到了后台(存储用户数据、释放一些共享资源、停止timer等)
applicationWillEnterForeground:---告诉delegate应用程序即将进入前台(恢复所有进入后台时暂停的任务)
applicationWillTerminate:---告诉delegate应用程序即将退出(从内存中清除),iOS4之后由applicationDidEnterBackground:替代