iOS_UI_01_UIView

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:替代
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 初识iOS APP开发#### 在iOS APP开发中, main函数仍是程序的入口和出口, 但main函数不需要...
    DeanYan阅读 6,110评论 0 3
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 655评论 0 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,121评论 29 470
  • 人在面试途中,都是套路啊!!!。 本文包括: OC的面向对象 运行时Runtime 运行循环RunLoop 事件响...
    Miu七七阅读 1,729评论 0 13
  • (一)家庭简易自制橘子太妃棒棒糖 这次制作的口味是黑胡椒橘子太妃糖棒棒糖(5个量) 材料: – 5个从超市买来的橘...
    街角与后院阅读 1,125评论 1 2