实现动画的三步曲
- 设置视图的动画初始状态
- 添加视图的动画相应属性
- 设置视图的动画最终状态
UIView常见动画的属性分析
UIView常见的属性有哪些?
位置属性 frame
bounds
center
frame
bounds
center
都是描述UIView
的位置属性,不同的是frame
可以对x
y
width
height
四个属性进行操作,frame
的x
y
是相对于父控件的原点来计算的,而bounds
一般只能对width
height
进行操作,它的x
y
坐标只相对于自身而言,center
描述的是x
y
信息,即UIView
的中心位置。
- swift版
public struct CGRect {
public var origin: CGPoint
public var size: CGSize
public init()
public init(origin: CGPoint, size: CGSize)
}
- OC版
/* Rectangles. */
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CG_BOXABLE CGRect CGRect;
再来看三者的数据类型。frame
是CGRect
类型,它是一个结构体,在结构体中包含origin
,size
两个属性,其中origin
描述UIView的x
,y
坐标起点位置信息。size
描述UIView的width
、height
宽高信息,我们再来看看origin
的CGPoint
和size
的CGSize
又是什么?
- swift版
/* Points. */
public struct CGPoint {
public var x: CGFloat
public var y: CGFloat
public init()
public init(x: CGFloat, y: CGFloat)
}
/* Sizes. */
public struct CGSize {
public var width: CGFloat
public var height: CGFloat
public init()
public init(width: CGFloat, height: CGFloat)
}
- OC版
/* Points. */
struct
CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CG_BOXABLE CGPoint CGPoint;
/* Sizes. */
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CG_BOXABLE CGSize CGSize;
CGPoint
中包含了UIView
的x
,y
坐标,而CGSize
中包含了UIView
的widt
,height
信息。通过对frame
中的数据类型进行追本溯源,可以得到以下结论:
CGRecct
分别对应x
坐标,y
坐标、width
、height
四个属性,这四个属性表明当前UI在它的父视图上的位置
可能通过x
,y
坐标修改UIView
的移动位置,还可以修改width
,height
来修改UIView
的拉伸、收缩效果,对于bounds
属性使用最多的还是width
,height
属必,center
则经常使用x
,y
坐标属性。
透明属性:alpha (透明属性,范围0-1,浮点型)
UIView
的alpha
属性也可以作动画效果,当alpha
值为0时,表明视图已经隐藏,当alpha
值为1时,视图显示。结合这一属性可以通过修改alpha
值在动画开始、结束时的值可以实现淡入淡出效果。
Layer属性:圆角渐变,边框颜色,阴影,3D等高级动画效果
UIView是视图显示的容器,负责内容显示和事件响应。每个视图都有一个layer图层,在这个图层中承栽的是视图的内容。所以结合layer可以实现很多高级效果。当然除了这些之外,视图还有其他属性。