图片折叠效果

  • 绕着x轴转动

  • 上半部分旋转,下半部分不动

  • 一张图片旋转的效果

    • .layer.transform MakeRotation
    • 整个都转上去了
  • 所以是两张图片

  • 把两张图片合成为一张图片

    • topImageView显示上半部分

      • layer.contentsRect:指定layer显示哪部分内容CGRectMake(0,0,1,0.5)
    • 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:弹性系数,值越小弹性越大
  • 总结
    • contentRect
    • 渐变层
    • 最大值计算方法
    • 带有弹性系数的动画

你可能感兴趣的:(图片折叠效果)