文章目录

  • iOS App的生命周期
    • iOS App的入口
    • UIApplicationMain
    • App的生命周期
    • App生命周期中各个事件的执行方法
  • 视图与视图层级
    • 什么是UIView
    • 图层(CALayer)与视图(UIView)
    • UIViewController生命周期
    • 图层几何学:frame、bounds、center
  • 常用的UI控件

iOS App的生命周期

iOS App的入口

main函数是iOS App的入口。
当我们从创建一个iOS App的时候,Xcode会自动为我们提供一个main函数实现。

#import <UIKit/UIKit.h>
#import "AppDelegate.h"int main(int argc, char * argv[]) {NSString * appDelegateClassName;@autoreleasepool {// Setup code that might create autoreleased objects goes here.appDelegateClassName = NSStringFromClass([AppDelegate class]);}return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}

一般情况下,我们不应该修改此main函数实现。

UIApplicationMain

上方代码中的UIApplicationMain函数会创建一个UIApplication对象,并且为其指定代理对象AppDelegate,由此开启应用程序的生命周期。
UIApplication是单例模式,一个应用程序只会有一个UIApplication对象。

  • UIApplication是iOS的应用实例,负责监听应用级事件。
  • AppDelegate是应用级事件代理,管理应用程序的生命周期、通知事件、外部调用等事件。

App的生命周期

  • Not Running:未运行。
  • Inactive:前台非活动状态。处于前台,但是不能接受事件处理。
  • Active:前台活动状态。处于前台,能接受事件处理。
  • Background:后台状态。进入后台,如果有可执行代码,会执行代码,代码执行完毕,程序挂起。
  • Suspended:挂起状态。进入后台,不能执行代码,如果内存不足,程序会被杀死。

App生命周期中各个事件的执行方法

https://www.cnblogs.com/evernight/p/3818570.html

  • applicationWillResignActive:将要进入非活动状态执行。在此期间,应用程序不接收消息或事件,比如来电话了。
  • applicationDidBecomeActive:已经进入活动状态执行。
  • applicationDidEnterBackground:已经进入后台的时候执行。所以要设置后台继续运行,则在这个函数里面设置。
  • applicationWillEnterForeground:将要从后台回到前台执行。
  • applicationWillTerminate:将要退出时调用。通常用来保存数据和一些退出前的清理工作。
  • applicationDidReceiveMemoryWarning:操作系统因内存太多而终止应用程序前会执行此方法。通常在这里进行内存清理工作防止程序被终止。
  • applicationSignificantTimeChange:当系统时间发生改变时执行。
  • applicationDidFinishLaunching:当程序载入后执行。

视图与视图层级

什么是UIView

UIView就是在屏幕上显示的一个矩形块。除了展示视图之外,还可以拦截用户输入。
iOS中,UIView是所有视图的根类。

图层(CALayer)与视图(UIView)

UIView实际上是CALayer的封装。
在层级关系上,UIView与CALayer有相平行的层级关系。

  • UIView处理布局和触摸事件。
  • CALayer负责绘图和动画。

UIView的职责就是创建并管理CALayer。确保子视图在层级关系中添加或移除的时候,对应的CALayer也能在层级关系树上有相同的操作。

UIViewController生命周期

视图控制器UIViewController是所有控制器的基类,可以负责视图显示,界面跳转等作用。

  1. init:最好不要出现创建view的代码,应当进行数据初始化
  2. loadView:进行view的创建和初始化
  3. viewDidLoad:创建一些附加的view和控件
  4. viewWillAppear:进行一些显示前的处理,比如键盘弹出或特殊动画
  5. viewDidAppear:在显示动画后需要做的操作
  6. viewWillDisappear
  7. viewDidDisappear
  8. viewWillUnload
  9. viewDidUnload
  10. dealloc

图层几何学:frame、bounds、center

UIView有三个重要的属性:frame、bounds、center
在CALayer中对应为:frame、bounds、position

UIView的frame、bounds和center属性仅仅是存取方法,视图绘制由CALayer进行

常用的UI控件

  • UIButton:按钮
  • UILabel:文本标签
  • UITextField:文本输入框
  • UIImageView:图片显示
  • UITableView:表格
  • UICollectionView:九宫格
  • UIProgressView:进度条
  • UISlider:滑块
  • UISwitch:开关
  • UISegmentControl:选项卡
  • UIActivityIndicator:圈圈
  • UIAlerterView:中间弹窗
  • UIActionSheet:底部弹框
  • UIScrollView:滚动的控件
  • UIPageControl:分页控件
  • UITextView:能滚动的文字显示控件
  • UIPickerView:选择器
  • UIDatePicker:日期选择器
  • UIWebView:网页显示控件
  • UIToolbar:工具条
  • UINavigationBar:导航条

iOS UIKit基本概念相关推荐

  1. iOS UIKit框架注解

    本文来自简书,原文地址:http://www.jianshu.com/p/e5b995ecf44d 导语 我们追求技术的提升,关注技术的发展历程:作为从事技术工作的伐码猿,有个想法(仅是个人想法),这 ...

  2. iOS UIKit:viewController之动画(5)

    当弹出一个view controller时,UIKit提供了一些标准转换动画,并且也支持用户自定义的动画效果. 1 UIView动画 UIView是自带动画实现功能,其中有两种方式实现:        ...

  3. iOS UIKit Dynamics(物理碰撞,动画)

    早期技术文章搬家,原文链接 大部分人或许觉得动画用UIView 或是CoreAnimation的动画效果,那为何还需要UIKit 中的UIDynamic? 答:UIDynamic 为使用者提供更符合现 ...

  4. 【iOS UIKit】UITableView属性及方法大全

    2019独角兽企业重金招聘Python工程师标准>>> UITableView:表视图 继承UIScrollView并遵守NSCoding协议 1 属性 frame--------- ...

  5. iOS UIKit:UITableView

    UITableView是UIScollView的子类,用于显示一列数据. 装在UITableView 里面的元素是UITableViewCell. UITableViewCell 预设有4种样式Sty ...

  6. 【Xamarin 开发 IOS --IOS 页面导航概念Segue】

    Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom 一.视图切换类型介绍 在storyboard中,segue有几种不同的类型 ...

  7. iOS 开发中容易忽略的UIKit概念

    引言 UIKit的概念 UIKit(用户界面工具包)是为移动应用程序定义图形界面元素的框架.从文本字符串到按钮和开关,用户在屏幕上操纵以与应用程序交互的所有标准元素均由此框架中的类定义.它的主要重点是 ...

  8. 值得向IOS学习的15个APP设计技巧!

    送给真正的互联网人一顿干货早餐 [小咖导读]本文源自公众号IXDC,iOS整体的品质感大家有目共睹,这源于其背后严格的设计规范,强调以内容为中心,以重点内容和功能为目标,来驱动每个细节设计.以下是从设 ...

  9. iPad开发环境搭建和基本概念

    安装黑苹果 下载东皇的iAntares 10.6.3 v2.2,最简单的安装方法是刻盘安装,如果不想刻盘,可以采用硬盘安装,工具:Leopardhdhelper 0.3.用写入U盘的安装方式安装失败. ...

  10. 最新2022【iOS开发面试真题】初级,中级,高级

    前言: 我是一名开发者,一个iOS交流圈子的维护者,对于程序员来说,要学习的知识内容.技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们! 标语:不要浪费 ...

最新文章

  1. 生产环境JVM内存大小配置
  2. VS中调试时不能关联源代码问题
  3. 剑指offer 合并2个排序的链表
  4. 字段定义_ArcGIS开发amp;gdb、shapefile创建与投影定义,字段创建
  5. [POJ1664] 放苹果 (动态规划,组合数学)
  6. HALCON 21.11:深度学习笔记---模型(8)
  7. 树与二叉树 | 平衡二叉树
  8. nodejs 密码加盐
  9. librtmp 源码分析笔记 ReadN
  10. 【Linux学习】实现石头剪刀布游戏
  11. ACdream 1069 无耻的出题人 无聊写着玩的题
  12. Stream流、方法引用知识梳理
  13. Linux正则表达式和文本处理工具(gred、awk、sed)
  14. RPG游戏制作-02-游戏世界主角的诞生
  15. HTTP状态码监测分析
  16. 《Qt5:键盘事件》
  17. C语言写的简单病毒程序
  18. 环信创建群组html,群组管理
  19. H3C S7500E系列高端多业务路由交换机
  20. html5中怎么实现居中显示图片

热门文章

  1. dragonfly数据库
  2. php mysql webim_webim(icomet) 使用
  3. 读 Robert C. Solomon 之《哲学导论》
  4. c语言小球消砖块的游戏,求大神帮忙看看这个弹弹球消砖块的游戏代码,为什么speed只能15...
  5. DESC查看表的结构
  6. 伊利洛伊大学厄巴纳-香槟分校计算机专业,伊利诺伊大学厄巴纳香槟分校哪些专业比较好?...
  7. 独到科技CEO:十年扎根社交数据,用AI技术帮助企业更好服务消费者
  8. Windows上WinRAR.exe命令行参数说明
  9. 系统架构师论文-论混合软件架构设计
  10. 从零开发短视频电商 阿里云架构图