iOS 开发学习之 User Interface(4)UIView 与 UIViewController【一】
UIViewController 与 UIView
self.view -> UIView : 根视图
一个界面上的UI是添加到self.view上,是self.view的直接或间接的子视图。
回顾: window.rootViewController
——————————————————————————————
UIViewController
视图控制器
作用:提供了基本的属性或方法用来管理应用程序的视图。
一个视图控制器管理一组构成一个用户界面的视图。包括加载,排列视图,与视图的交互,协调与数据的响应。除此之外,还处理与其他视图控制器的交互。
一般情况下,不会直接创建UIViewController的实例,而是实例话它的子类。
——————————————————————————————
创建UIView
初始化:
initWithFrame:
基本属性:
.backgroundColor
.hidden // 是否隐藏
.alpha // 透明度 0~1
.layer
.clipsToBounds
——————————————————————————————
.frame // 当前视图相对于(直接)父视图的位置和大小
.bounds // 当前视图相对于自己的位置和大小
.center // 当前视图的中心点相对于父视图的位置
.transform // 形变属性,改变视图的平移,缩放比例,旋转角度等
——————————————————————————————
.tag // 视图的标识
.userInteractionEnable // 是否允许视图接收用户交互,默认为YES
方法:
视图间的层次,通过addSubview:使一个视图成为另一视图的子视图。一个视图只能有一个父视图,也就是说:当一个视图经过[aView addSubview:],[bView addSubview:]后,它的父视图是bView。
viewWithTag: // 通过视图标识获取视图对象
addSubview: // 添加子视图
removeFromSuperview // 子视图从父视图脱离
bringSubviewToFront: // 将某一子视图移动到其父视图最上层
insertSubview:atIndex: // 将某一子视图插入到指定层级索引
insertSubview:aboveSubview: // 将某一子视图插入到某一子视图之上
insertSubview:belowSubview: // 将某一子视图插入到某一子视图之下
exchangeSubviewAtIndex:withSubviewAtIndex: // 交换两个子视图的层级索引
——————————————————————————————
父子视图间的自适应
父视图缩放时,子视图的位置,大小也随之变化。
父视图.autoresizesSubviews // 设置子视图们是否可适应父视图的变化
子视图.autoresizingMask // 设置子视图适应父视图的模式
——————————————————————————————
UIView的图层:CALayer
任何一个视图都是由一个主图层+多个子图层构成。
UIView 对象.layer : 是主图层
UIView 绘图部分是由CALayer进行,UIView是CALayer的管理器
——————————————————————————————
动画
在iOS中动画,分属在两个框架下:UIKit 和 Quartz Core, 分别是在UIView 和 CALayer 上进行操作。前者是后者的封装。
[工程]:UIViewAnimation
a. UIView 级别的动画(封装度高,代码简单,灵活度低)
设置视图属性在一段时间内的变化值,一般只需要设置开始,结束值即可。
方法一及步骤:
+ beginAnimations:context: // 开始一个动画块
+ setAnimationDuration: // 设置动画持续时间
+ setAnimationDelay: // 设置动画延时
+ setAnimationRepeatCount: // 设置动画重复次数
+ setAnimationCurve: // 设置动画曲线样式
+ setAnimationTransition:forView:cache: // 在动画块期间为视图设置过渡
//…这里设置要变化的视图属性,如frame
+ commitAnimations // 提交一个动画块
——————————————————————————————
方法二:(使用block对象)
+ animateWithDuration:delay:options:animations:completion: // 使用指定的持续时间,延时,选项,提交动画块,动画完成块 实现动画;transform
[工程]: CALayerAnimation
b. CALayer级别的动画 (直接操作图层,代码稍复杂,灵活度高)
由 Core Animation (核心动画,简称 CA) 实现,直接作用于CALayer, 对于 UIView级别的动画,底层实际上也是由CA实现。
CA下的动画类:CAAnimation 是所有动画类的父类,不能直接使用,使用其子类。
可以使用的子类有:CABasicAnimation, CAKeyframeAnimation , CAAnimationGroup, CATransition.
>> CATransition 创建动画
方法及步骤:
[CATransition animation] // 创建动画对象
setDuration: // 动画持续时间
setType: // 动画类型
setSubtype: // 动画方向
.layer addAnimation:forKey: // 将动画对象添加到图层CALayer上
——————————————————————————————