本文共 4024 字,大约阅读时间需要 13 分钟。
CASpringAnimation的使用
效果
源码
//// CASpringAnimationController.m// Animations//// Created by YouXianMing on 16/1/19.// Copyright © 2016年 YouXianMing. All rights reserved.//#import "CASpringAnimationController.h"#import "RangeValueView.h"#import "WxHxD.h"#import "UIView+SetRect.h"@interface CASpringAnimationController ()@property (nonatomic, strong) UIButton *showView;@property (nonatomic, strong) RangeValueView *stiffnessView;@property (nonatomic, strong) RangeValueView *dampingView;@property (nonatomic, strong) RangeValueView *massView;@property (nonatomic, strong) RangeValueView *initialVelocityView;@end@implementation CASpringAnimationController- (void)setup { [super setup]; [self initRangeViews]; [self initButton];}- (void)initButton { CGFloat gap = Height - 60 - 40*4 - 64; CGFloat width = 50.f; self.showView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, width, width)]; self.showView.center = CGPointMake(self.contentView.middleX, 64 + gap / 2.f); self.showView.backgroundColor = [UIColor cyanColor]; self.showView.layer.cornerRadius = width / 2.f; self.showView.x = Width / 2.f - 50; [self.showView addTarget:self action:@selector(doAnimation) forControlEvents:UIControlEventTouchUpInside]; [self.contentView addSubview:self.showView];}- (void)doAnimation { CASpringAnimation *springAnimation = [CASpringAnimation animationWithKeyPath:@"position.x"]; springAnimation.stiffness = self.stiffnessView.currentValue; springAnimation.mass = self.massView.currentValue; springAnimation.damping = self.dampingView.currentValue; springAnimation.initialVelocity = self.initialVelocityView.currentValue; springAnimation.duration = springAnimation.settlingDuration; springAnimation.fromValue = @(Width / 2.f - 50); springAnimation.toValue = @(Width / 2.f + 50); self.showView.layer.position = CGPointMake(Width / 2.f + 50, self.showView.layer.position.y); [self.showView.layer addAnimation:springAnimation forKey:nil];}- (void)initRangeViews { self.stiffnessView = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60, Width - 20, 0) name:@"硬度 Stiffness" minValue:10.f maxValue:200.f defaultValue:100.f]; [self.contentView addSubview:self.stiffnessView]; self.dampingView = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60 - 40, Width - 20, 0) name:@"阻尼 Damping" minValue:0.1f maxValue:10.f defaultValue:5.f]; [self.contentView addSubview:self.dampingView]; self.massView = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60 - 40*2, Width - 20, 0) name:@"质量 Mass" minValue:0.1 maxValue:20.f defaultValue:1.f]; [self.contentView addSubview:self.massView]; self.initialVelocityView = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60 - 40*3, Width - 20, 0) name:@"速度 Velocity" minValue:-20.f maxValue:20.f defaultValue:0.f]; [self.contentView addSubview:self.initialVelocityView];}@end
细节
转载地址:http://epvia.baihongyu.com/