動畫是iOS開發(fā)中非常常用的功能,我們可以通過動畫做出非常炫目的效果,有趣的界面.下面簡單介紹下動畫的創(chuàng)建.
layer
每個view都有一個layer層,用來顯示圖形.layer也可以做動畫.
- 創(chuàng)建layer
//創(chuàng)建layer
CALayer *layer = [[CALayer alloc] init];
//設置layer的陰影顏色
layer.shadowColor = [UIColor redColor].CGColor;
//設置layer的陰影偏移量
layer.shadowOffset = CGSizeMake(10, 10);
//設置layer的背景色
layer.backgroundColor = [UIColor redColor].CGColor;
//設置layer的frame
layer.frame = CGRectMake(0, 0, 100, 100);
//設置layer的錨點
layer.anchorPoint = CGPointZero;
//設置layer的position
layer.position = CGPointZero;
//將layer添加至父控件的layer上
[_orangeView.layer addSublayer:layer];
注意:在創(chuàng)建layer時,必須設置frame與背景色,否則將無法顯示出來.
-
關于錨點(anchorPoint)與position
position是決定了layer顯示在父控件的哪個位置,默認position是該layer的中心點.
anchorPoint決定了layer自身顯示在position的哪個位置.
不設置position與anchorPoint
設置position為(0,0)
設置錨點為(0,0)
設置錨點和position同時為(0,0)
從上述設置可以看出:
1. position與錨點的默認點為中心點
2. position總是與錨點顯示在同一位置
3. layer是否發(fā)生偏移有錨點決定
layer的動畫設置
- 我們可以通過設置layer的平移,縮放,旋轉(zhuǎn)等屬性來讓layer做出動畫效果.
//設置偏移(相對于上一次)
_layer.transform = CATransform3DTranslate(<#CATransform3D t#>, <#CGFloat tx#>, <#CGFloat ty#>, <#CGFloat tz#>)
//設置旋轉(zhuǎn)(相對于上一次)
_layer.transform = CATransform3DRotate(<#CATransform3D t#>, <#CGFloat angle#>, <#CGFloat x#>, <#CGFloat y#>, <#CGFloat z#>);
//設置縮放(相對于上一次)
_layer.transform = CATransform3DScale(<#CATransform3D t#>, <#CGFloat sx#>, <#CGFloat sy#>, <#CGFloat sz#>)
//設置旋轉(zhuǎn)(相對于原始位置)
_layer.transform = CATransform3DMakeRotation(<#CGFloat angle#>, <#CGFloat x#>, <#CGFloat y#>, <#CGFloat z#>)
//設置縮放(相對于原始位置)
_layer.transform = CATransform3DMakeScale(<#CGFloat sx#>, <#CGFloat sy#>, <#CGFloat sz#>)
//設置偏移(相對于原始位置)
_layer.transform = CATransform3DMakeTranslation(<#CGFloat tx#>, <#CGFloat ty#>, <#CGFloat tz#>)