红包动画

- (void)wxRedPacket{ //深色背景 CAShapeLayer *redLayer = [[CAShapeLayer alloc] init]; UIBezierPath *pathFang = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 80, screenW-40, screenH-160) cornerRadius:4]; redLayer.path = pathFang.CGPath; [self.view.layer addSublayer:redLayer]; [redLayer setFillColor:[UIColor colorWithRed:0.7968 green:0.2186 blue:0.204 alpha:1.0].CGColor]; //浅色红包口 CAShapeLayer *lineLayer = [[CAShapeLayer alloc] init]; UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 80, screenW-40, screenH-320) byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(4, 4)]; CGPoint startPoint = CGPointMake(20, screenH-240); CGPoint endPoint = CGPointMake(screenW-20, screenH-240); CGPoint controlPoint = CGPointMake(screenW*0.5, screenH-180); //曲线起点 [path moveToPoint:startPoint]; //曲线终点和控制基点 [path addQuadCurveToPoint:endPoint controlPoint:controlPoint]; //曲线部分颜色和阴影 [lineLayer setFillColor:[UIColor colorWithRed:0.851 green:0.3216 blue:0.2784 alpha:1.0].CGColor]; [lineLayer setStrokeColor:[UIColor colorWithRed:0.9401 green:0.0 blue:0.0247 alpha:0.02].CGColor]; [lineLayer setShadowColor:[UIColor blackColor].CGColor]; [lineLayer setLineWidth:0.1]; [lineLayer setShadowOffset:CGSizeMake(6, 6)]; [lineLayer setShadowOpacity:0.2]; [lineLayer setShadowOffset:CGSizeMake(1, 1)]; lineLayer.path = path.CGPath; [self.view.layer addSublayer:lineLayer]; //发红包按钮 UIButton *sendBtn = [[UIButton alloc] initWithFrame:CGRectMake((screenW-100)/2, screenH-240-20, 100, 100)]; sendBtn.layer.masksToBounds = YES; sendBtn.layer.cornerRadius = sendBtn.bounds.size.height/2; [sendBtn setTitle:@"发红包" forState:UIControlStateNormal]; [sendBtn setBackgroundColor:[UIColor brownColor]]; [sendBtn addTarget:self action:@selector(moveAnimation:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:sendBtn]; }



-(void)moveAnimation:(UIButton *)sender{ CABasicAnimation *transformAnima = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; // transformAnima.fromValue = @(M_PI_2); transformAnima.toValue = [NSNumber numberWithFloat: M_PI]; transformAnima.duration = 0.5; transformAnima.cumulative = YES; transformAnima.autoreverses = NO; transformAnima.repeatCount = HUGE_VALF; transformAnima.fillMode = kCAFillModeForwards; transformAnima.removedOnCompletion = NO; transformAnima.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; sender.layer.zPosition = 5; sender.layer.zPosition = sender.layer.frame.size.width/2.f; [sender.layer addAnimation:transformAnima forKey:@"rotationAnimationY"]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [sender removeFromSuperview]; UIBezierPath *newPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 80, screenW-40, screenH-620) byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(4, 4)]; CGPoint startPoint = CGPointMake(20, screenH-540); CGPoint endPoint = CGPointMake(screenW-20, screenH-540); CGPoint controlPoint = CGPointMake(screenW*0.5, screenH-480); //曲线起点 [newPath moveToPoint:startPoint]; //曲线终点和控制基点 [newPath addQuadCurveToPoint:endPoint controlPoint:controlPoint]; CGRect newFrame = CGRectMake(20, 80, screenW-40, screenH-620); CABasicAnimation* pathAnim = [CABasicAnimation animationWithKeyPath: @"path"]; pathAnim.toValue = (id)newPath.CGPath; CABasicAnimation* boundsAnim = [CABasicAnimation animationWithKeyPath: @"frame"]; boundsAnim.toValue = [NSValue valueWithCGRect:newFrame]; CAAnimationGroup *anims = [CAAnimationGroup animation]; anims.animations = [NSArray arrayWithObjects:pathAnim, boundsAnim, nil]; anims.removedOnCompletion = NO; anims.duration = 0.1f; anims.fillMode = kCAFillModeForwards; [self.lineLayer addAnimation:anims forKey:nil]; }); }

你可能感兴趣的:(红包动画)