當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
POPSpring动画参数详解
生活随笔
收集整理的這篇文章主要介紹了
POPSpring动画参数详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
POPSpring動畫參數詳解
?
效果
?
源碼
https://github.com/YouXianMing/Animations
// // POPSpringParameterController.m // Animations // // Created by YouXianMing on 15/11/29. // Copyright ? 2015年 YouXianMing. All rights reserved. // #import "POPSpringParameterController.h" #import "RangeValueView.h" #import "UIView+SetRect.h" #import "POP.h" #import "FontAttribute.h" #import "ForegroundColorAttribute.h" #import "NSMutableAttributedString+StringAttribute.h"#define Width [UIScreen mainScreen].bounds.size.width #define Height [UIScreen mainScreen].bounds.size.height@interface POPSpringParameterController ()@property (nonatomic, strong) UILabel *secondsLabel; @property (nonatomic, strong) NSDate *dateStart;@property (nonatomic, strong) RangeValueView *rangeSpeed; @property (nonatomic, strong) RangeValueView *rangeBounciness; @property (nonatomic, strong) RangeValueView *rangeMass; @property (nonatomic, strong) RangeValueView *rangeFriction; @property (nonatomic, strong) RangeValueView *rangeTension;@property (nonatomic, strong) UIButton *showView;@end@implementation POPSpringParameterController- (void)viewDidLoad {[super viewDidLoad]; }- (void)setup {[super setup];[self initSecondLabel];[self initButton];[self initRangeViews];[self bringTitleViewToFront]; }- (void)initSecondLabel {self.secondsLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10 + 64, 100, 20)];self.secondsLabel.attributedText = [self stringWithFloat:0.f];[self.view addSubview:self.secondsLabel]; }- (NSAttributedString *)stringWithFloat:(CGFloat)value {// 字符串NSString *stringValue = [NSString stringWithFormat:@"%.2f", value];NSString *secondString = [NSString stringWithFormat:@"seconds"];NSString *totalString = [NSString stringWithFormat:@"%@ %@", stringValue, secondString];// 字體UIFont *allFont = Font_Avenir(12);UIFont *numFont = Font_Avenir_Light(20);FontAttribute *totalFont = [FontAttribute new];totalFont.font = allFont;totalFont.effectRange = NSMakeRange(0, totalString.length);FontAttribute *valueFont = [FontAttribute new];valueFont.font = numFont;valueFont.effectRange = [totalString rangeOfString:stringValue];ForegroundColorAttribute *textColor = [ForegroundColorAttribute new];textColor.color = [UIColor grayColor];textColor.effectRange = NSMakeRange(0, totalString.length);ForegroundColorAttribute *numColor = [ForegroundColorAttribute new];numColor.color = [UIColor blackColor];numColor.effectRange = [totalString rangeOfString:stringValue];NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:totalString];[attributeString addStringAttribute:totalFont];[attributeString addStringAttribute:valueFont];[attributeString addStringAttribute:textColor];[attributeString addStringAttribute:numColor];return attributeString; }- (void)initButton {CGFloat gap = Height - 60 - 40*4 - 64;CGFloat width = 100.f;self.showView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, width, width)];self.showView.center = CGPointMake(self.view.middleX, 64 + gap / 2.f);self.showView.backgroundColor = [UIColor cyanColor];self.showView.layer.cornerRadius = self.showView.width / 2.f;[self.view addSubview:self.showView];[self.showView addTarget:selfaction:@selector(doAnimation)forControlEvents:UIControlEventTouchUpInside]; }- (void)doAnimation {// 移除動畫 [self.showView.layer pop_removeAllAnimations];POPSpringAnimation *spring = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];// 設置代理spring.delegate = self;// 動畫起始值 + 動畫結束值spring.fromValue = [NSValue valueWithCGSize:CGSizeMake(1.f, 1.f)];spring.toValue = [NSValue valueWithCGSize:CGSizeMake(2.f, 2.f)];// 參數的設置spring.springSpeed = self.rangeSpeed.currentValue;spring.springBounciness = self.rangeBounciness.currentValue;spring.dynamicsMass = self.rangeMass.currentValue;spring.dynamicsFriction = self.rangeFriction.currentValue;spring.dynamicsTension = self.rangeTension.currentValue;// 執行動畫 [self.showView.layer pop_addAnimation:spring forKey:nil]; }- (void)pop_animationDidStart:(POPAnimation *)anim {self.dateStart = [NSDate date]; }- (void)pop_animationDidApply:(POPAnimation *)anim {CGFloat seconds = -[self.dateStart timeIntervalSinceNow];self.secondsLabel.attributedText = [self stringWithFloat:seconds]; }- (void)pop_animationDidStop:(POPAnimation *)anim finished:(BOOL)finished {CGFloat seconds = -[self.dateStart timeIntervalSinceNow];self.secondsLabel.attributedText = [self stringWithFloat:seconds]; }- (void)initRangeViews {self.rangeSpeed = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60, Width - 20, 0)name:@"速度 Speed"minValue:0.fmaxValue:20.fdefaultValue:12.f];[self.view addSubview:self.rangeSpeed];self.rangeBounciness = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60 - 40, Width - 20, 0)name:@"彈力 Bounciness"minValue:0.fmaxValue:20.fdefaultValue:4.f];[self.view addSubview:self.rangeBounciness];self.rangeMass = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60 - 40*2, Width - 20, 0)name:@"質量 Mass"minValue:0.1maxValue:10.fdefaultValue:1.f];[self.view addSubview:self.rangeMass];self.rangeFriction = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60 - 40*3, Width - 20, 0)name:@"摩擦 Friction"minValue:1maxValue:50defaultValue:30.486980];[self.view addSubview:self.rangeFriction];self.rangeTension = [RangeValueView rangeValueViewWithFrame:CGRectMake(10, Height - 60 - 40*4, Width - 20, 0)name:@"拉力 Tension"minValue:1maxValue:1000defaultValue:300];[self.view addSubview:self.rangeTension]; }@end?
細節
?
總結
以上是生活随笔為你收集整理的POPSpring动画参数详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一次spring,第三天。
- 下一篇: 打印100~200 之间的素数