实现动画的三步曲
- 设置视图的动画初始状态
- 添加视图的动画相应属性
- 设置视图的动画最终状态
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可以实现很多高级效果。当然除了这些之外,视图还有其他属性。
 
                     
                     
                 
                        
                        