UIReview(UI总结)

UIReview(UI总结)

1.UIView

  UIWindow: 窗口类, 一般和屏幕大小保持一致, 一个应用至少要有一个窗口, 用于展示内容

 1, 3g, 3gs, 4, 4s : 320 * 480

  5, 5c, 5s : 320 * 568

 6, 6s : 375 * 667

 6 Plus, 6s Plus : 414 * 735

程序的执行顺序

  a. main函数

  b. AppDelegate(UIApplication的代理)

  c. didFinishLaunching, 创建window

  d. window.rootViewController

UIView(或子类)的创建步骤

  a. 开辟内存空间

  b. 设置属性

  c. 添加到父视图

  d. 释放

UIView的属性

  a. backgroundColor

  b. frame(基于父视图)

  c. center(基于父视图)

  d. bounds(基于子视图)

  e. tag

  f. subviews

  g. superviews

  h. hidden

  i. alpha

  j. clipsToBounds

坐标和大小相关的类型

  CGPoint

  CGSize

  CGRect

视图层级关系

  addSubview

  removeFromSuperview

2.UIView的子类

  UILabel, 标签视图 numberOfLines

  UITextField, 单行文本输入框

  UIButton, 按钮(titleimage在一层, backgroundImage在后一层)

3.自定义视图和UIViewController

  自定义视图的步骤

  a. 继承于UIView(或子类)创建一个类

  b. 结合控件个数写属性

  c. 重写父类的初始化方法, 创建控件(相对坐标, 宏定义)

  d. 测试

MVC: Model-View-Controller, 苹果提倡的设计框架

  model: 数据模型, 存数据

  view: 视图, 展示内容

  controller: 控制器, 协调者

  modelview是不能够相互通信的, controllermodelview的协调者

  viewcontroller通信的方法: delegate, dataSource, target-action

  modelcontroler的通信方式: KVO, notification

UIViewController执行的过程

  a. alloc

  b. init

  c. loadView(生成UIViewController自带的视图)

  d. viewDidLoad所有对UIViewController自带的视图操作, 都必须在执行viewDidLoad之后

  e. viewWillAppear

  f. viewDidAppear

  g. viewWillDisappear

  h. viewDidDisappear

4.事件

iOS事件

  a. 触摸事件

  b. 晃动事件

  c. 远程控制

响应者链

UIApplication->UIWindow->UIViewController->UIView

第一响应者, 谁处理这个事件, 谁就是第一响应者

如何捕获触摸事件?

  a. 创建继承于UIView的子类

  b. 重写touchBegan, touchMoved, touchEnd, touchCancel

5.target-actiondelegate

 target-action的实现

 继承于UIControl, 就具备这个设计模式

delegate

 找代理

  a. 写协议

  b. delegate属性(assign)

  c. 在合适的时候, 让代理执行协议方法

  d. 安全做法: 先判断代理是否实现方法, 再执行

 成为代理

  a. 指定代理

  b. 遵守协议

  c. 实现协议方法

6.手势: 对触摸事件的封装

 有哪些手势:

  a. 点击手势

  b. 捏合手势

  c. 轻扫手势

  d. 长按手势

  e. 旋转手势

  f. 平移手势

  g. 边缘平移手势

7.UIScrollView, 滚动视图

frame, 可视区域大小

contentSize, 内容页大小

8.UINavigationController, 导航控制器

  a. 用于管理具有层级关系的视图控制器

  b. 以栈的形势管理页面

  c. 进入下一个页面, push(入栈)

  d. 返回上一个页面, pop(出栈)

  e. 自带一个UINavigationbar

 f. 每一个视图控制器, 拥有一个UINavigationBar, titleView, leftBarButtonItem(s), rightbarButtonItem(s)

页面间传值

  1.属性传值, 从前往后

  2.代理传值, 从后往前

  3.单例传值, 多个页面间传值

  4. block传值, 只要能写出delegate传值, 都可以转化成block传值

9.UItableView, 表视图

  tableView的创建 = 视图创建的过程

tableView数据显示

  a.指定dataSource

  b.完成协议方法(行数, Cell创建)

数据封装

  a.数据

  b.字典

  c.自定义的类

Cell的重用机制

  a. 创建标识符

  b. 根据标识符去复用池找cell

  c. 判断是否找到, 没有找到, 就创建(注册cell)

  d. cell上展示数据

  e. return cell

tableView层次结构

  a. 一个tableview = 一个表头 + 一个表尾 + 多个分区

  b. 一个分区 = 一个区头 + 一个区尾 + 多个cell

  c.一个cell = contentView + accessoryView

  d.一个contentView = textlabel + detailTextLabel + imageView

tableView的编辑(删除和添加)

  1.editButtonItem

  2.tableView进入编辑状态

  3.指定那些行可以进入编辑状态(YES)

  4.指定编辑的样式(删除或添加)

  5.完成编辑(先处理数据, 再改变cell)

tableView的移动

  1.editButtonItem

  2.tableView进入编辑状态

  3.指定那些行可以移动(YES)

  4.完成移动(修改数据, 先保留原数据, 删除原数据, 数据插入目标位置, 释放)

  5.限制移动

tableViewCell的混合移动

  不同的cell要使用不同的标识符

动态cell高度

boundingRectWithSize

  a.宽度固定, 高度为0

  b.行高 + 行间距

  c.指定文字大小(label文字大小一致)

  d.labelnumberOfLines = 0

  c.修改label高度的同时, 修改cell的高度

12.模态切换: 视图控制器没有层级关系时, 使用模态切换

  a.present, 切换下一页面

  b.dismiss, 返回上一页面

单例

  a.保证一个类之生成一个对象

  b.单例不会释放, 直到程序结束

  c.单例创建方法(+方法, 返回值当前类, main/shared/default + 类名)

  d.单例内不能存过大数据

13.UItabBarController, 标签控制器

  a.用于管理具有平级关系的视图控制器

  b.不需要管理切换

  c.被管理的视图控制器放在viewControllers

  d.自带一个UITabBar

  e.每一个视图控制器, 都有一个UITabBarItem(image, title, badgeValue)

  f.底部最多显示5个视图控制器, 5, 最后一个变成more

  g.创建一个tabBarController的子类, 把代码封装起来

  h.管理的视图控制器, 运行时, 只加载第一个视图控制器, 其他的视图控制器只有在点击时才加载, 且只加载一次

常见的应用构架

  a.window的根视图控制器是tabBarController

  b.tabBarController管理多个navigationController

  c.navigationController管理viewController

14.可视化编程不等于不写代码

  a.快述创建并布局

  b.逻辑代码需要自己写

  c.IBOutlet关联属性

  d.IBAction关联方法

  e.先选中, 再操作

  f.输入内容, 要按回车

  g.xib, 一对一, storyboad一对多

  h.4个选项卡(, 属性, 尺寸, 关联)

  i.UIStoryboard, 用于管理storyboard文件, 找视图控制器(根视图控制器, 根据标识符找视图控制器)

  j.UIStoryboardSegue, 线, 连两个视图控制器

15.数据解析

数据格式, 用于格式化数据

  a.XML, 一个节点由开始标签和结束标签组成, 一个节点有一个父节点和多个子节点, 没有父节点就是根节点, 没有子节点就是叶子节点

  b.JSON, 数组[]和字典{}相互嵌套

XML解析

  a.SAX, 逐行解析, 错误之前的内容能够解析

  b.DOM, 整篇解析, 效率高

JSON解析

  setValuesForkeys

16.网络请求(HTTP请求)

HTTP请求方式(API文档决定)

  a.GET, 参数存放在URL的后面, ?拼接, 参数要以key = value的形式出现, 多个键值对用&连接

  b.POST, 参数存放在HEEPBody

发送请求的方式(由自己决定, 多数使用异步)

  a.同步: 必须等到数据返回回来, 当数据比较大时, 就会造成"假死"

  b.异步: 发出请求后, 无需等待, 可以执行其他操作

网络请求的过程

  a.创建URL

  b.创建请求(GET: NSURLRequest, POST: NSMutableRequest)

  c.发出请求

  d.数据返回(delegate, block)

做一个具有网络请求页面的过程

  a.网络请求

  b.对得到的数据进行解析

  c.对数据进行封装

  d.在控件上进行展示

17.综合练习

第三方:

  a.AENetWorking, 网络请求

  b.SDWebImage, 异步图片加载

  c.SVPullToRefresh, 下拉刷新, 上拉加载

18.数据持久化

  a.沙盒机制: iOS系统会为每一个应用单独创建一个文件夹, 这个文件夹只允许当前应用访问

沙盒的文件夹

  a. Document, 重要文件夹, 会同步到此文件夹, 内容不能过多

  b. Library, 资源文件夹

  c. tmp, 临时文件夹

  d. *.app, 应用程序包

数据持久化的方式

  1.文件读写(字典, 数组, 字符串, 二进制)

  2.NSUserDefaults, 单例类(基本数据类型, 对象, URL), 绑定一个plist文件

  3.归档(支持自定义类型), 实质: 把数据转成二进制, 再把二进制写入文件, 前期: 遵守<NSCoding>协议, 对类中的属性进行编码和解码

  4.sqlite, 轻量级数据库,(创建表, 增删改查)

  5.Coredata

 

时间: 2024-08-04 18:18:20

UIReview(UI总结)的相关文章

基于jquery开发的UI框架整理分析

根据调查得知,现在市场中的UI框架差不多40个左右,不知大家都习惯性的用哪个框架,现在市场中有几款UI框架稍微的成熟一些,也是大家比较喜欢的一种UI框架,那应该是jQuery,有部分UI框架都是根据jQuery研发出来的产品,现在也很常见了. 国产jQuery UI框架 (jUI) DWZ DWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的基于jQuery实现的Ajax RIA开源框架.设计目标是简单实用,快速开发,降低ajax开发成本. jQuery 部件布局

iOS instruments之ui automation的简单使用(高手绕道)

最近使用了几次instruments中的automation工具,现记录下automation的简单使用方法,希望对没接触过自动化测试又有需求的人有所帮助.  UI 自动测试是iOS 中重要的附加功能,它由名为"Automation"的新的工具对象支持.Automation工具的脚本是用JavaScript语言编写,主要用于分析应用的性能和用户行为,模仿/击发被请求的事件,利用它可以完成对被测应用的简单的UI测试及相关功能测试. 一. 简单的录制脚本 打开xcode,这里用我为我家亲爱

RDVECore来自锐动的无UI,高度抽象化API的视频编辑SDK--IOS版

1 编写目的 预期读者: 有视频编辑开发经验或者无经验的,打算或者正在使用"锐动IOS版RDVECore"的相关工程师. iOS软件工程师. 产品经理. QA 2 名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1080x720,640x480等. 帧率:每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数. 码率: 数据传输时单位时间传送的数据位数,一般我们用的

UI渲染回顾简单笔记

UI渲染的简单过程: CPU,GPU,显示器协同工作,CPU 中计算显示内容,比如视图的创建.布局计算.图片解码.文本绘制等,然后将计算结果提交给GPU,由 GPU 进行变换.合成.渲染.随后 GPU 会把渲染结果提交到帧缓冲区去,随后等待下一次 VSync(垂直同步信号) 到来时,视频控制器会逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示.由于垂直同步的机制,如果在一个 VSync 时间内,CPU 或者 GPU 没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再显示,而这时显示

关于Vue的各个UI框架(elementUI、mint-ui、VUX)

elementUI 官网:http://element.eleme.io/ 使用步骤: 1.安装完vue-cli后,再安装 element-ui 命令行:npm i element-ui -D 相当于  npm install element-ui --save-dev //   i -> install       D  -> --save-dev       S -> --save   都是缩写 2.在main.js入口文件中引入它的js和css import ElementUI f

Vue.js之UI组件elementUI——MintUI

目的: 为了提高开发效率 功能 原则: 拿过来直接使用 vue-cli  ->  vue-loader bower 前端包管理器 jquery#1.11.1 自动解决依赖npm node包管理器 [email protected] 饿了么团队开源一个基于vue 组件库 elementUI: 如何使用 官网:http://element.eleme.io/使用:1. 安装 element-ui npm i element-ui -D npm install element-ui --save-de

第一百八十九节,jQueryUI,折叠菜单 UI

jQueryUI,折叠菜单 UI 学习要点: 1.使用 accordion 2.修改 accordion 样式 3.accordion()方法的属性 4.accordion()方法的事件 5.accordion 中使用 on 折叠菜单(accordion),和选项卡一样也是一种在同一个页面上切换不同内容的功能 UI.它和选项卡的使用几乎没有什么太大区别,只是显示的效果有所差异罢了. 一.使用 accordion 使用 accordion 比较简单,但需要按照指定的规范即可. HTML 部分 <d

学习ui设计是自学好?还是参加培训好?

ui设计自学好?还是参加培训好? 想学UI设计的人,或是想转行UI设计的人,大多都有一个困惑,要不要报班?去哪里报班?报什么班?学UI设计自学好还是报班培训好?相信这是想要进入UI设计行业领域的人们心中都有的疑问,那么该怎么办?下面小编谈谈ui设计自学好还是参加培训好的看法! 1.自学UI设计,首先是你要了解自己是有基础,还是零基础.有基础的话可以自学,不过要找到足够专业的ui学习平台,不然技术还没学会,反而把时间给耽误了,然后就是自己对学习的时间以及学习的实践操作做规划.只有持之以恒的不断学习

Winform软件,不要在线程里操作UI

对于Winform软件,不要在线程里操作UI,不要相信:StartForm.CheckForIllegalCrossThreadCalls = false; 于是,把所有的代码都改成主线程委托调用的方式 private delegate void SetTextHandle(string id, string value); private void ThreadSetText(string id, string value) { this.Controls.Find(id, true)[0].