用POP动画模拟真实秒钟摆动效果

用POP动画模拟真实秒钟摆动效果

静态图:

动画图:

此处用到了POP中的Spring系列动画,现提供源码如下:

SecondClockView.h 与 SecondClockView.m

//
//  SecondClockView.h
//  YouXianMingClock
//
//  Created by YouXianMing on 14-10-12.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface SecondClockView : UIView

/**
 *  Use in conjunction with 'springSpeed' to change animation effect. Values are converted into corresponding dynamics constants. Defined as a value in the range [0, 20]. Defaults to 18.
 */
@property (nonatomic, assign) CGFloat springBounciness;

/**
 *  The mass used in the dynamics simulation.
 */
@property (nonatomic, assign) CGFloat dynamicsMass;

/**
 *  Use in conjunction with 'springBounciness' to change animation effect. Values are converted into corresponding dynamics constants. Defined as a value in the range [0, 20]. Defaults to 18.
 */
@property (nonatomic, assign) CGFloat springSpeed;

/**
 *  给与时间进行的动画
 *
 *  @param second 当前秒
 */
- (void)startAnimationWithSecond:(float)second;

@end
//
//  SecondClockView.m
//  YouXianMingClock
//
//  Created by YouXianMing on 14-10-12.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "SecondClockView.h"
#import "POP.h"

/**
 *  将角度转换为弧度
 *
 *  @param d 角度
 *
 *  @return 弧度
 */
#define DEGREES__TO__RADIANS(d)  ((d) * M_PI / 180.f)

@interface SecondClockView ()

{

    BOOL firstTime;

}

@end

@implementation SecondClockView

- (void)startAnimationWithSecond:(float)second
{
    // 秒钟
    POPSpringAnimation *springAnimation = \
        [POPSpringAnimation animationWithPropertyNamed:kPOPLayerRotation];

    springAnimation.fromValue        = @(DEGREES__TO__RADIANS((360)/60.f)*(second - 1) + DEGREES__TO__RADIANS(-90));
    if (firstTime == NO) {
        firstTime = YES;
        springAnimation.fromValue    = @(0);
    }
    springAnimation.toValue          = @(DEGREES__TO__RADIANS((360)/60.f)*second + DEGREES__TO__RADIANS(-90));
    springAnimation.springBounciness = (_springBounciness > 0 && _springBounciness <= 20)?_springBounciness:18.f;
    springAnimation.dynamicsMass     = (_dynamicsMass > 0)?_dynamicsMass:1.5f;
    springAnimation.springSpeed      = (_springSpeed > 0 && _springSpeed <= 20)?_springSpeed:18.f;
    [self.layer pop_addAnimation:springAnimation forKey:nil];
}

@end

使用时候的情形

使用的时候请引入POP库

时间: 2024-09-21 07:12:58

用POP动画模拟真实秒钟摆动效果的相关文章

用POP动画编写带富文本的自定义动画效果

用POP动画编写带富文本的自定义动画效果 [源码] https://github.com/YouXianMing/UI-Component-Collection   [效果]   [特点] * 支持富文本 * 可定制型强(继承父类重写父类的startAnimation方法即可) * 支持动画的中断与持续 * 支持CAMediaTimingFunction * 数据与UI隔离,便于你封装属于你的类   [核心] // // POPNumberCount.h // POP // // Created

如何利用PowerPoint模板制作小球摆动效果

  1.启动PowerPoint2010,设置背景色,稍微装饰一下. 2.给标题框添加文字,并画出线和小球. 3.设置线和小球的颜色,边缘效果,使其看起来像球而不是圆. 4.将线和小球组合起来. 5.关键的一步,大家注意看,把鼠标移动到线的上端,按住键盘Shift+Ctrl键画圆,这时会出现以线的上端为圆心的轮廓,改变直径大小,使其可以盖住小球. 6.将大圆设为无色无线条,跟小球组合. 7.添加动画效果--陀螺旋,为什么要画大圆呢?陀螺旋只是物体360度旋转,虽然可以改变度数,但并不是像时钟那样

在PowerPoint2007中模拟打印机文字输入效果

  打印机相信大家都不陌生,几乎每个公司都有这样的办公设备.在平时办公中给了我们很大的帮助.本次课程,我们就来简单的模拟打印机打字的动画效果. 案例教程 ①我们先在网上搜索打印机的图片,放入到PowerPoint里面,然后建立一个文本框,做为纸张.里面输入文字,文字不要对齐,这样看上去更有立体感.然后选中纸张,单击菜单栏--动画--自定义动画. ②此时会弹出右侧的动画窗格,单击添加效果--进入--下降. ③然后设置下降的属性,开始:单击时,速度:快速. ④设置完成,单击动画窗格里面的幻灯片放映按

imageview-houzz的标签摆动效果,求教实现思路

问题描述 houzz的标签摆动效果,求教实现思路 国外一个houzz的装修软件,里面有个viewpager实现的画廊,里面是一些装修的效果图,在效果图里面,会用一个图片标签标注一些商品,这个标签可以跟随重力进行左右的摇摆,动画的效果挺好看,也挺新颖的. 刚好最近接到一个这样的需求,我就自己试了下,可以实现随着重力来改变标签的方向,但是就是实现不了左右摆动的效果,我反编译的houzz的源码,看到里面是扩展了ImageView控件,但源码里面各种抽象和重构,一点都看不懂实现的原理,上来请教下,不知道

网页-select 如何使用JS&amp;amp;amp;JQ模拟真实的点击事件

问题描述 select 如何使用JS&JQ模拟真实的点击事件 <br> function googleTranslateElementInit() {<br> new google.translate.TranslateElement({<br> pageLanguage: 'en',<br> includedLanguages: 'en,zh-CN,de',<br> layout: google.translate.TranslateE

POP动画[2]

POP动画[2]   1:定制控制器间的转场动画. 源码有点多-_-!! // // RootViewController.h // Animation // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKit.h> @interface RootViewController : UIViewController @end RootViewController.h // // RootViewCont

POP动画[3]

POP动画[3] 这一节主要讲解POP动画的自定义动画属性. POP动画中有一个参数,叫timingFunction,与CoreAnimation中的一个参数CAMediaTimingFunction基本一样,下图表示的是kCAMediaTimingFunctionEaseInEaseOut的曲线图. 下图是Spring动画效果: 我们可以使用自定义的属性来实现POP的库中没有提供的动画. 实现的效果: 源码: // // RootViewController.m // YXPOP // //

unity窗帘-unity 如何做模拟开拉窗帘效果

问题描述 unity 如何做模拟开拉窗帘效果 实现 unity 模拟开拉窗帘效果 ,现在是用动画实现太耗图了,希望有其他方法

POP动画[1]

POP动画[1] pop动画是facebook扩展CoreAnimation的,使用及其方便:)   1:Spring系列的弹簧效果(两个动画kPOPLayerBounds与kPOPLayerCornerRadius同时运行) #import "RootViewController.h" #import "YXEasing.h" #import "POP.h" #import "YXGCD.h" @interface Root