绕着x轴转动
上半部分旋转,下半部分不动
-
一张图片旋转的效果
- .layer.transform MakeRotation
- 整个都转上去了
所以是两张图片
-
把两张图片合成为一张图片
-
topImageView显示上半部分
- layer.
contentsRect
:指定layer显示哪部分内容CGRectMake(0,0,1,0.5)
- layer.
-
bottomImageView显示下半部分
- layer.contentsRect:指定layer显示哪部分内容CGRectMake(0,0.5,1,0.5)
-
把上面的view锚点设置到x轴上
- 锚点:0.5,1
- 位置发生改变,整体往上面走了
把下面的view的锚点修改为0.5,0
-
-
搞一个view盖住图片,作为拖拽的view
- 高度200
- clearColor
- 添加手势pan
- 让上部图片旋转
- 旋转的角度需要计算,不能写死
-
找最大值
,最大角度是180度 - 什么情况下最大,走200的偏移量时候最大
- translationInView:
- transP.y
- angle = transP.y *M_PI /200.0
- 旋转立体效果
近大远小
layer
transform m34
-
创建一个空的transform
- CATransform3DIndentity
-
transform.m34 = -1/300.0
- 300.0眼睛离屏幕的距离
- 设置的的越小,看到的越大
不带make,把transform传进去
-
底部阴影渐变效果
-
渐变层
CAGradientLayer是CALayer的子层和layer使用基本相似
大小、位置、添加到另一个layer上面
大小:bottomImageView.bounds
-
设置渐变的颜色colors
- NSArray类型
- @[(id)[UIColor redColor].CGColor,(id)[UIColor greenColor].CGColor,(id)[UIColor blueColor].CGColor]
-
设置渐变的方向(0~1)
- 从上往下渐变默认的方式
- startPoint
- endPoint
-
设置渐变的起始位置
- 从哪个位置渐变到另一个颜色
- locations = @[@0.5]
- 和colors对应,红色从0.5的位置开始渐变到下一个颜色
addSublayer:
- 示例程序是从透明颜色到黑色的渐变
- @[(id)[UIColor clearColor].CGColor,(id)[UIColor blakColor].CGColor]
- 设置图层的不透明度opacity
- 拖动的时候,把opacity逐渐改为1
- 搞一个成员属性gradientLayer
- transP.y *1 /200.0
-
-
当手指松开时候,反弹回去
- 判断手势状态ended
- 复位
- 清空transform,CATransform3DIndentity
- 取消阴影opacity = 0
- 反弹动画
- animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:
- damping:弹性系数,值越小弹性越大
- animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:
- 总结
- contentRect
- 渐变层
- 最大值计算方法
- 带有弹性系数的动画