UIKit
1 overview
UIKit Framework ,UIKit框架事ios 为UI而推出的Frame。
UIKit和其他UI框架构造相似,有 窗口,按钮,列表等class。
UIKit 采用 MVC 模式。
UIKit是 Cocoa Touch 的重要部分。
2 MVC 模型
MVC Model,MVC全名是Model View Controller,是模型(model)-视图(view)- 控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数 据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面, 在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。 MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个 逻辑的图形化用户界面的结构中。
Model | View | Controller |
---|---|---|
应用程序中用于处理应用程序数据逻辑的部分 | 应用程序中处理数据显示的部分 | 应用程序中处理用户交互的部分 |
通常模型对象负责在数据库中存取数据 | 通常视图是依据模型数据创建的 | 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据 |
3 Project Config Basic 项目基本设置
da
4 ios应用的生命期
iOS Application Life Cycle
• willFinishLaunchingWithOptions:告诉代理进程启动但还没进入状态保存
• didFinishLaunchingWithOptions:告诉代理启动基本完成程序准备开始运行
• applicationWillResignActive:当应用程序将要入非活动状态执行,在此期间,应
用程序不接收消息或事件,比如来电话了
• applicationDidBecomeActive:当应用程序入活动状态执行,这个刚好跟上面那
个方法相反
• applicationDidEnterBackground:当程序被推送到后台的时候调用。所以要设置
后台继续运行,则在这个函数里面设置即可
• applicationWillEnterForeground:当程序从后台将要重新回到前台时候调用,这
个刚好跟上面的那个方法相反
• applicationWillTerminate:当程序将要退出是被调用,通常是用来保存数据和一
些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值
• applicationDidFinishLaunching:当程序载入后执行
5 视图控制器
View Controller ,视图控制器是在MVC模式下,控制视图逻辑的控制器 ;视图控制器管理视图的层次结构;视图控制器处理视图的用户事件,例如点击、手势等…
6 UIView
UIview 是一个UIkit中最基本的类
UIView视图与UIWindows窗口是iOS构造用户界面的组件
iOS应用启动后,创建的第一个视图控件是UIWindow
iOS应用通常只有一个窗口(OS X 程序会有多个窗口)
// An highlighted block
ViewFrom 视图外观属性
//View的外观属性 :
backgroundcolor //设置视图背景颜色
alpha //设置视图透明度
hidden //设置视图隐藏状态
ViewGeometry 视图几何属性,视图控制 UIView的 方法
Frame(CGRect) = Origin(CGPoint) + Size(CGSize)
Frame(视图的整体框架)相当于 Origin(视图原点,左上角的点的坐标)加上 Size(视图的尺寸)
layer 视图的层次
//添加子视图
addSubView //在视图最上层添加子视图
InsertSubView //在视图特定层次添加子视图
bringSubView //移动指定子视图到最前
sendSubView //移动指定子视图到最后
exchangeSubView //交换两个子视图的层次位置
//删除子视图
removeFromSuperView//删除子视图,使用子视图的对象的方法
7 如何开始构造UI
UI Builder,
7.1 故事板
故事板 Storyboard
Xcode 为我们提供一个简单的可视化的UI设计方法,故事板
可见:storyboard中 可以直接拖拽 组建进入视图控制器下的 View,(SafeArea,是为了边界不被遮挡,顶部信息不被遮挡的一个功能类)
7.2 自动布局
AutoLayout
我们当然可以使用一些计算来为我们的每一个实例的控制器组件(controller )设置origin point,和 size从而达到优雅的布局,这其实是一种可变的布局,随着设备尺寸的变化,设备的横竖变化,动态的UI需求都能够优美实现。
但这样可能会比较复杂,对于一些简单的应用我们没有这样复杂的需求,使用ios 强大的内置的UI自动布局方法事半功倍。
约束条件
横批竖屏问题
7.3 Label
7.4 Button
7.5 Switch
7.6 Segment
7.7 Progress
7.8 Slider
7. 9 Stepper
7.10 Test Field
7.11 Alert & Action 提醒 与动作
7.12 Picker & DatePicker 选择器 以及 日期选择器
日期选择器, 特殊的选择器
• UIDatePicker类对日期选择器进行封装
• date:设置或获取日期时间
• locale:设置时区
• datePickerMode:设置模式
• maximumDate:日期上限
• minimumDate:日期下限
选择器
• UIPickerView类对选择器进行封装
• UIPickerViewDelegate:选择器代理协议
• UIPickerViewDataSource:选择器数据源代理协议
• 常用属性与方法
delegate、datasource:代理属性和数据源代理属性
numberOfComponents(in pickerView: UIPickerView) -> Int
pickerView(_ pickerView: UIPickerView, component: Int) -> Int
pickerView(_ pickerView: UIPickerView, forComponent component: Int) -> String?
ickerView(_ pickerView: UIPickerView, inComponent component: Int)
numberOfRowsInComponent titleForRow row: Int, didSelectRow row: Int,
7.13 Scroll & PageScroll 翻页与滚动
• 当信息在一屏中容纳不下时,可考虑使用滚动视图,顾名思义,该视图 可以在屏幕中滚动
• 在滚动过程中,其实是修改原点坐标
• 有些应用每次显示一页,这时使用滚动视图与页视图配合
• UIScrollView类对滚动视图控件进行封装
• UIScrollViewDelegate:滚动视图代理协议
• 常用属性与方法
contentSize:设置滚动视图的内容尺寸
showsVerticalScrollIndicator:隐藏垂直指示条
showsHorizontalScrollIndicator:隐藏水平指示条
7.14 WebViewControl Web视图控件
• UIWebView类对Web视图控件进行封装
• UIWebViewDelegate:滚动视图代理协议
• 常用属性与方法
loadRequest:加载指定URL的网页
7.15 TableView 表视图
TableView 上有 Section 单元 ,每个单元又分 Cell 子单元
7.16 Custom View 自定义视图
自定义视图显示三角形
自定义TableView Cell
自定义 TableView and Custom Cell